2012-09-06 253 views
1

的最後一個關鍵這是我曾嘗試:PHP查找關聯多維數組

foreach ($multiarr as $arr) { 
    foreach ($arr as $key=>$val) { 
     if (next($arr) === false) { 
     //work on last key 
     } else { 
     //work 
     } 
    } 
} 

我們再看一下之後,我覺得next正在使用錯在這裏,但我不知道該怎麼辦纔好。

是否有可能看到我是否在這個數組的最後一次迭代?

+0

下一步()就像那樣只會重複foreach($ arr)在做什麼。你會因爲它而跳過每一個$ key。 –

回答

3
$lastkey = array_pop(array_keys($arr)); 
$lastvalue = $arr[$lastkey]; 

如果你想在一個循環中使用它,只是比較$lastkey$key

+0

此代碼不適用於PHP嚴格標準,因爲'只有變量應該通過引用傳遞'。 – schellingerht

1

您將需要保持的迭代次數和檢查它,你遍歷數組的長度。 PHP中的默認Iterator實現不允許您檢查下一個元素是否有效 - 接下來有一個void返回值,並且api僅公開檢查當前位置是否有效的方法。見這裏http://php.net/manual/en/class.iterator.php。要實現你正在考慮的功能,你必須用peek()或nextIsValid()方法實現自己的迭代器。

1

試試這個:

foreach ($multiarr as $arr) { 
    $cnt=count($arr); 
    foreach ($arr as $key=>$val) { 
     if (!--$cnt) { 
     //work on last key 
     } else { 
     //work 
     } 
    } 
} 
1

見下面鏈接,我認爲它有助於全給你: -

如何獲得最後的關鍵在一個陣列?

How to get last key in an array?

更新:

<?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" 
+2

如果您認爲這是另一個問題的重複,請使用關閉按鈕將其鏈接到該重複,而不是答案 –

+0

我已更新我的答案請看看。 –

1

此功能(在理論上,我沒有測試過)將返回最後和最深切的關鍵在多維關聯數組中。給我一個跑步,我想你會喜歡它的。

function recursiveEndOfArrayFinder($multiarr){ 

    $listofkeys = array_keys($multiarr); 
    $lastkey = end($listofkeys); 
    if(is_array($multiarr[$lastkey])){ 
     recursiveEndOfArrayFinder($multiarr[$lastkey]); 
    }else{ 
    return $lastkey; 
    } 
}