Why does false[0] not throw an undefined offset
error?
(and should I count on this behavior)
Background Story
I am sending the options
object of a Vuetify datatable component to a php backend. The backend is slim3.
I noticed that the query parameter for sortDesc looked like: api/search/order?sortDesc[]=true
I didn't even know you could pass an array in a URL parameter! It's an array because multisort is possible, but I will never use it. Well, there are three possibilities being: sortDesc[0]=true
, sortDesc[0]=false
, and sortDesc
not present at all. I figured out the parameter may not be present after I made the change to my code to look at the zero index of the parameter like this:
$options['orderDir'] = $request->
getQueryParam('sortDesc', $default = false)[0] ? 'DESC' : 'ASC';
I realize this isn't the best way to do this parameter init/check, but now I'm wondering why I'm not getting an exception when the parameter isn't present, so I made a test an executed the code echo false[0];
and sure enough, no error.
These also do not throw an error
echo 'some thing' . false[0]
echo 'some thing' . false[20]
echo false[-10]
echo 'some thing' . true[0]
I could not find any documentation or write up detailing this behavior and was wondering if anyone had some incite. Especially whether I should count on this behavior.