这是测试代码,旨在获取一组数组,将它们打乱,并将值分配给父数组中的 ['data'] 元素,然后删除一个元素。这是非常基本的,只是为了说明一点:
$g = //some array;
shuffle($g);
foreach ($g as &$r) {
shuffle($r);
}
$tables[] = array('name' => 'table1', 'data' => $g);
shuffle($g);
foreach ($g as &$r) {
shuffle($r);
}
$tables[] = array('name' => 'table2', 'data' => $g);
shuffle($g);
foreach ($g as &$r) {
shuffle($r);
}
$tables[] = array('name' => 'table3', 'data' => $g);
unset($tables[0]['data'][0][0]);
print_r($tables);
当 $g 是一个具有多个元素的数组,并且嵌套数组具有多个元素时,它可以正常工作。删除数据元素中第一个嵌套数组中的第一个值:
$g = array('12' => array('11111', '22222'), '56' => array('55555', '66666'));
// Output
Array
[0] => Array
[name] => table1
[data] => Array
[0] => Array
[1] => 66666
[1] => Array
[0] => 11111
[1] => 22222
[1] => Array
[name] => table2
[data] => Array
[0] => Array
[0] => 11111
[1] => 22222
[1] => Array
[0] => 55555
[1] => 66666
[2] => Array
[name] => table3
[data] => Array
[0] => Array
[0] => 55555
[1] => 66666
[1] => Array
[0] => 11111
[1] => 22222
当 $g 是一个元素的数组时,所有数据元素中的第一个元素被删除,这是不期望的:
$g = array('12' => array('11111', '22222'));
// Output
Array
[0] => Array
[name] => table1
[data] => Array
[0] => Array
[1] => 22222
[1] => Array
[name] => table2
[data] => Array
[0] => Array
[1] => 22222
[2] => Array
[name] => table3
[data] => Array
[0] => Array
[1] => 22222
$g = array('12' => array('11111'));
// Output
Array
[0] => Array
[name] => table1
[data] => Array
[0] => Array
(Empty)
[1] => Array
[name] => table2
[data] => Array
[0] => Array
(Empty)
[2] => Array
[name] => table3
[data] => Array
[0] => Array
(Empty)
我看不出这怎么可能是预期的行为。这是漫长的一天。那么有人可以让我摆脱痛苦并告诉我我在这里缺少什么吗?
谢谢。
后来:刚刚看到这可能是我的答案:
后来又说:
是的。在 foreach() 循环之后添加了 unset($r) 并且它工作正常。无需回复!