假设我将一个值附加到一个数组,该数组已附加到一个数组:
$a = array();
$b = array();
$b[] = 42;
$a[] = $b;
echo $a[0][0];
>> 42
输出是(如预期的那样)“42”。现在假设我对我的代码顺序做了一个小改动。此更改应该没有任何区别,因为数组应该通过引用传递。
$a = array();
$b = array();
$a[] = $b;
$b[] = 42;
echo $a[0][0];
>> Notice: Undefined offset: 0 in /opt/iceberg/web/upload/auth.php on line 111
是什么赋予了?在将我的代码简化为这个简化的示例时,我无法摆脱自己犯了一些应该很明显的错误的感觉。任何帮助,将不胜感激!
解决方案
您可以强制按引用分配:
$a = array();
$b = array();
$a[] =& $b;
$b[] = 42;
echo $a[0][0];
>> 42
附录:在更复杂的情况下使用时,=&
以神秘的方式工作并导致一些非常奇怪的(对我而言)行为。我认为对于 PHP 新手来说,最好坚持按值赋值。