![](/img/trans.png)
[英]Find a key on a multidimensional associative array and modify the array structure (PHP)
[英]PHP Find last key of associative multidimensional array
這是我嘗試過的:
foreach ($multiarr as $arr) {
foreach ($arr as $key=>$val) {
if (next($arr) === false) {
//work on last key
} else {
//work
}
}
}
再看看之后,我認為next
在這里使用錯了,但我不知道該怎么做。
是否有可能看到我是否在這個數組的最后一次迭代?
$lastkey = array_pop(array_keys($arr));
$lastvalue = $arr[$lastkey];
如果你想在循環中使用它,只需將$lastkey
與$key
進行比較
您需要保留迭代次數,並根據迭代的數組長度進行檢查。 PHP中的默認Iterator實現不允許您檢查下一個元素是否有效 - next有一個void返回,api只公開一個方法來檢查當前位置是否有效。 見http://php.net/manual/en/class.iterator.php 。 要實現您正在考慮的功能,您必須使用peek()或nextIsValid()方法實現自己的迭代器。
嘗試這個:
foreach ($multiarr as $arr) {
$cnt=count($arr);
foreach ($arr as $key=>$val) {
if (!--$cnt) {
//work on last key
} else {
//work
}
}
}
請參閱下面的網址,我認為它對您有所幫助: -
如何獲取數組中的最后一個鍵?
更新:
<?php
$array = array(
array(
'first' => 123,
'second' => 456,
'last' => 789),
array(
'first' => 123,
'second' => 456,
'last_one' => 789),
);
foreach ($array as $arr) {
end($arr); // move the internal pointer to the end of the array
$key = key($arr); // fetches the key of the element pointed to by the internal pointer
var_dump($key);
}
輸出:
string(4) "last" string(4) "last_one"
這個函數(理論上,我還沒有測試過)將返回多維關聯數組中的最后一個和最深的鍵。 給我一個跑,我想你會喜歡它。
function recursiveEndOfArrayFinder($multiarr){
$listofkeys = array_keys($multiarr);
$lastkey = end($listofkeys);
if(is_array($multiarr[$lastkey])){
recursiveEndOfArrayFinder($multiarr[$lastkey]);
}else{
return $lastkey;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.