Are you testing for empty, or are you testing if there is a value in an array
variable? If there is no key matching your array variable, LC will return an
empty string. An empty string is a value.
Mark is using a different method, seeing if a key of an array is itself an
array. If bobtest ["value"] contains another array so that bobtest ["value"]
["anumber"] contains 1, then bobtest ["value"] is an array. If bobtest
["value"] contains 1 then it is not an array.
But getting the value of bobtest ["value"] ["number"] will return empty whether
or not bobtest '{value"] is an array. This is why Mark is testing for an array
rather than the value.
It seems a bit wonky, you might think, "Why not return an error?" But trust me,
when you work with arrays, especially when it comes to datagrid data, this is
the best course.
Bob S
> On Mar 8, 2021, at 16:25 , HENRY LOWE via use-livecode
> <[email protected]> wrote:
>
> Thanks Mark. There are two possible states:
>
> tArray[“status”] holds a value and tArray[“status”][“text”] does not
>
> or
>
> tArray[“status”][“text”] holds a value and tArray[“status”] does not
>
>
> My code is trying to do the following:
>
> If tArray[“status”] does not hold a value then check if
> tArray[“status”][“text”] holds a value
>
>
> The crux is how one reliably determines that an array member (e.g.
> tArray[“status”]) holds a value?
>
> I would have assumed that if the array member does not hold a value then -
> if tArray[member] is empty would always return true. However that does not
> appear to be the case if the array is multidimensional.
>
>
> It appears that both tArray[“status”] is an array and
> tArray[“status”][“text”] is an array are true. Am I missing something about
> using this syntax?
>
> Thanks,
>
> Henry
>
>
>> On Mar 8, 2021, at 3:56 PM, Mark Wieder via use-livecode
>> <[email protected]> wrote:
>>
>> On 3/8/21 3:46 PM, HENRY LOWE via use-livecode wrote:
>>
>>> I have often used the form 'if tArray[“key1”] is empty' to determine
>>> whether an array element hold a value but this breaks if
>>> tArray[“key1”][“key2”] holds a value.
>>
>> Same here. Not that I've every liked that paradigm, just that it's been that
>> way since life crawled out of the ocean.
>>
>> However this should do the trick.
>>
>> if tArray["status"] is an array then
>> put tArray["status"]["text"] into tStatus
>> else
>> put tArray["status"] into tStatus
>> end if
>>
>> --
>> Mark Wieder
>> [email protected]
>>
>> _______________________________________________
>> use-livecode mailing list
>> [email protected]
>> Please visit this url to subscribe, unsubscribe and manage your subscription
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> [email protected]
> Please visit this url to subscribe, unsubscribe and manage your subscription
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode