考虑以下数组
$array = array('fruit' => 'apple',
'vegetable' => 'potato',
'dairy' => 'cheese');
Run Code Online (Sandbox Code Playgroud)
我想使用array_pop来获取最后一个键/值对.
但是,人们会注意到以下之后
$last = array_pop($array);
var_dump($last);
Run Code Online (Sandbox Code Playgroud)
它只输出值(string(6) "cheese")
如何从阵列中"弹出"最后一对,保留键/值数组结构?
Mār*_*dis 21
查看array_slice() http://php.net/manual/en/function.array-slice.php
print_r(array_slice(array("a" => "1", "b" => 2, "c" => 3), -1, 1));
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Array ( [c] => 3 )
Ria*_*iaD 10
尝试
end($array); //pointer to end
each($array); //get pair
Run Code Online (Sandbox Code Playgroud)
为什么不使用新功能?从 PHP 7.3 开始,以下代码有效:
// As simple as is!
$lastPair = [array_key_last($array) => array_pop($array)];
Run Code Online (Sandbox Code Playgroud)
上面的代码简洁高效(据我测试,对于具有 10000 个元素的数组,它比array_slice()+快大约 20% array_pop();原因是它array_key_last()确实很快)。这样最后一个值也将被删除。
提示:您还可以分别提取键和值:
[$key, $value] = [array_key_last($array), array_pop($array)];
Run Code Online (Sandbox Code Playgroud)
您可以使用end()和key()键和值,然后您可以弹出值.
$array = array('fruit' => 'apple', 'vegetable' => 'potato', 'dairy' => 'cheese');
$val = end($array); // 'cheese'
// Moves array pointer to end
$key = key($array); // 'dairy'
// Gets key at current array position
array_pop($array); // Removes the element
// Resets array pointer
Run Code Online (Sandbox Code Playgroud)