Php 数组\从数组中的数组移位

Php 数组\从数组中的数组移位,php,arrays,Php,Arrays,我正在尝试删除最后一个数组的第一个元素 数组: $harbours = array( '67' => array('boat1', 'boat2'), '43' => array('boat3', 'boat4') ); 我想删除并返回boat3 $last = end($harbours); $boat = array_shift($last); 如果我然后打印($HARBORS),“boat3”仍

我正在尝试删除最后一个数组的第一个元素

数组:

$harbours = array(
              '67' => array('boat1', 'boat2'),
              '43' => array('boat3', 'boat4')
            );
我想删除并返回
boat3

$last = end($harbours);
$boat = array_shift($last);

如果我然后打印($HARBORS),“boat3”仍然在那里。

这是因为在
数组中\u shift
您正在更改末端数组的副本

您需要获取结束数组的引用才能移动它

试试这个:

end($array);

$currKey = key($array); //get the last key

array_shift($array[$currKey]);
参见演示:

$last=end($harbours)
//首先反转数组,然后弹出最后一个元素,这将是原始数组的第一个元素。
数组_pop(数组_reverse($last));
此代码应按预期工作:

$harbours = array('67' => array('boat1', 'boat2'), '43' => array('boat3', 'boat4'));

end($harbours);

$key = key($harbours);

$x = $harbours[$key];

array_shift($x);

$harbours[$key] = $x;

print_r($harbours);

谢谢你的回复。是的,我意识到了这一点,但我尝试了
end(&$harbours)
,但没有成功。PHP所做的大部分事情都是通过复制(而不是引用)完成的。因此,要修改最后一个元素,您需要指向它,或者使用原始数组的引用(例如,
array\u shift($harbor[sizeof($harbor)-1])
@Christian我刚刚添加了一个演示^ ^@BradChristie sizeof在这里不起作用,因为数组没有零索引。@Christian没问题^ ^ ^ ^ ^很乐意帮忙!哇,你让这个waaaayyy变得比它必须的更复杂了。@Neal:那么,投反对票吧?这是我的方式,我看到你做得很优雅。如果你能给男人们添加一条评论就太好了下面是投票否决答案的原因……虽然我不是投票否决的人,但你的答案基本上与提问者的代码相同
array\u pop(array\u reverse($last))
array\u shift($last)相同
-您在发布代码之前是否测试过代码?@Slayer Birden,我同意您的说法。您完全正确。由于您的评论,我注意到了关于一些核心功能的这一非常微小但重要的事实。
$harbours = array('67' => array('boat1', 'boat2'), '43' => array('boat3', 'boat4'));

end($harbours);

$key = key($harbours);

$x = $harbours[$key];

array_shift($x);

$harbours[$key] = $x;

print_r($harbours);