我正在按顺序获得这些结果...
array(2){[0] => int(1)[1] => int(2)}
警告array_merge():参数2不是第12行的数组
NULL
警告array_merge():参数1不是第14行的数组
NULL
我正试图了解为什么..
这是我的代码:
$referenceTable = array();
$referenceTable['val1'] = array(1, 2);
$referenceTable['val2'] = 3;
$referenceTable['val3'] = array(4, 5);
$testArray = array();
$testArray = array_merge($testArray, $referenceTable['val1']);
var_dump($testArray);
$testArray = array_merge($testArray, $referenceTable['val2']);
var_dump($testArray);
$testArray = array_merge($testArray, $referenceTable['val3']);
var_dump($testArray);
答案 0 :(得分:2)
这里的问题是,如果array_merge()
的第一个或第二个参数都不是数组,则返回值为NULL
结果,对$testArray = array_merge($testArray, $referenceTable['val2'])
的调用的求值为$testArray = array_merge($testArray, 3)
,并且由于3
的类型不是array
,因此对array_merge()
的调用返回{ {1}},其结果是将NULL
设置为等于$testArray
。然后,当我们转到下一个对NULL
的调用时,array_merge()
现在为$testArray
,因此NULL
再次返回array_merge()
。
解决方法很简单。如果仅将第二个参数转换为数组,则将获得所需的结果。因此,更正后的NULL
调用如下:
array_merge()
这将产生以下输出:
$testArray = array_merge($testArray, (array)$referenceTable['val1']);
var_dump($testArray);
$testArray = array_merge($testArray, (array)$referenceTable['val2']);
var_dump($testArray);
$testArray = array_merge($testArray, (array)$referenceTable['val3']);
var_dump($testArray);