在PHP中,我有一个如下所示的数组:
$array[0]['width'] = '100';
$array[0]['height'] = '200';
$array[2]['width'] = '150';
$array[2]['height'] = '250';
我想在此之后添加一个新项目,如下所示:
$array[]['width'] = '300';
$array[]['height'] = '500';
但是上面的代码不起作用,因为它为每一行添加了一个新密钥。对于上面的两行,它应该是相同的。一个聪明的方法来解决它?
另一种解决方案是找到最后一个密钥。我没有尝试'结束'功能。
答案 0 :(得分:9)
正确的方法是:
$array[] = array(
'width' => 200,
'height' => 500,
);
因为您实际上是在向$array
添加新数组。
答案 1 :(得分:5)
怎么样
$array[] = array("width" => "300", "height" => "500");
答案 2 :(得分:3)
或者,只是为了完整性和显而易见性,使用临时数组:
$t=array();
$t['width']='300';
$t['height']='500';
然后将其添加到主阵列:
$array[]=$t;
答案 3 :(得分:2)
另一种解决方案,当您无法在单个语句中添加两个值时非常有用:
$a = array();
$array[] &= $a; // Append a reference to the array, instead of a copy
$a['width'] = '300';
$a['height'] = '500';
但您也可以检索数组中的最后一个键:
$array[]['width'] = '300';
end($array); // Make sure the internal array pointer is at the last item
$key = key($array); // Get the key of the last item
$array[$key]['height'] = 300;
答案 4 :(得分:1)
如果您不介意丢失这些密钥,可以通过重新编制索引来轻松解决问题。
$array = array_values($array);
$i = count($array);
$array[$i]['width'] = '300';
$array[$i]['height'] = '500';
但是,如果您不想这样做,您也可以使用它:
$array[] = array(
'width' => '300',
'height' => '500'
);
这将创建一个新数组并将其作为第二维插入。