|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2010-06-26 18:29 UTC] bubi1 at mailinator dot com
Description:
------------
The code below is self explaining.
Test script:
---------------
php -r '$arr = array('test');var_dump($arr[0][0]);var_dump(isset($arr[0][0]));'
Expected result:
----------------
NULL
bool(false)
Actual result:
--------------
string(1) "t"
bool(true)
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2026 The PHP GroupAll rights reserved. |
Last updated: Fri Aug 14 23:00:01 2026 UTC |
Yes, i know that a string is an array of chars. Maybe i'm wrong,but i remember once only the syntax $string{0} was working, non $string[0] also. Anyway, why this works? php -r '$arr = 'test';var_dump($arr['rasmus']);' still prints "t". There is no key called "rasmus" in the $arr string...Yes, you are righ, i have found that. "Warning [...] Non-integer types are converted to integer. [...]" However i find this behavior a bit strange. If the string is an array, it should behave as an array, and generate an error on a non existend key. Otherwise, if do not know if $arr is a string or array, i have to use 3 functions for checking the existence of a value: is_array($arr) && array_key_exists('smth', $arr) && isset($arr['smth']), when i could simply use isset($arr['smth']) if things worked as expected. But ok, nevermind. A documented bug is a feature :) Sorry for opening this thread.