PHP autovivification -


update: original intention question determine if php has feature. has been lost in answers' focus on scalar issue. please see new question instead: "does php have autovivification?" question left here reference.

according wikipedia, php doesn't have autovivification, yet code works:

$test['a']['b'] = 1; $test['a']['c'] = 1; $test['b']['b'] = 1; $test['b']['c'] = 1;  var_dump($test); 

output:

array   'a' =>      array       'b' => int 1       'c' => int 1   'b' =>      array       'b' => int 1       'c' => int 1 

i found code works too:

$test['a'][4] = 1; $test['b'][4]['f'] = 3; 

but adding line causes warning ("warning: cannot use scalar value array")

$test['a'][4]['f'] = 3; 

what's going on here? why fail when add associative element after index? 'true' perl-like autovivification, or variation of it, or else?

edit: oh, see error scalar now, oops! these work expected:

$test['a'][4]['a'] = 1; $test['a'][4]['b'] = 2; $test['a'][5]['c'] = 3; $test['a'][8]['d'] = 4; 

so, php have autovivification? searching google "php autovivification" doesn't bring canonical answer or example of it.

from php manual on square bracket syntax:

$arr[] = value;

if $arr doesn't exist yet, created, alternative way create array

with example:

$test['a'][4] = 1; 

since $test , $test['a'] don't exist; both created arrays.

$test['b'][4]['f'] = 3; 

$test['b'] , $test['b'][4] don't exist; both created arrays.

$test['a'][4]['f'] = 3; 

$test['a'][4] does exist, integer (1). "scalar value" cannot used array. can't use square bracket [] syntax on number values; doesn't convert existing value array.


Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -