我們有一個多維關聯數組。有必要在一個寫在其他線性數組上的鍵上尋址一個數組的元素。如何通過另一個線性數組中的鍵訪問多維數組的元素?
也就是說,有一個多維數據陣列和一個帶鑰匙的線性陣列:
$a=[
'animals'=> [
'cats' => [
'catusdomesticus' => 'home',
'pantera' => 'wild'
]
]
];
$keys=['animals', 'cats', 'pantera'];
有兩兩件事要做:
- (簡單)獲取$ a的值[ '動物'] [ '貓'] [ '貓']
- (復)刪除元素美元[ '動物'] [ '貓'] [ '貓']
如何在PHP5中執行此操作?
注意:這是必需的沒有代碼生成和eval()。
UPD:
獲得價值很簡單:
$item =& $a;
foreach($keys as $key)
$item =& $item[$key];
var_dump($item);
對於remove元素我嘗試下面的代碼:
$item =& $a;
for($i=0; $i<count($keys); $i++)
{
$item =& $item[$keys[$i]];
if($i===count($keys)-1) {
echo "\nDelete element:\n";
var_dump($item);
unset($item);
}
}
var_dump($a);
但是,這是不行的。 unset()通過引用數組的值可以刪除數組元素。
UPD2:用於設定值
簡短的解決方案或從數組中刪除元素:
$item =&$a;
foreach($keys as $key) {
$array =& $item;
$item =& $item[$key];
}
$array[$key] = 42; // For set value
OR
unset($array[$key]); // For remove element
爲什麼不是關鍵'catusdomesticus'是新的數組的數組值?有理由嗎? –
你有什麼嘗試? 1.你必須自己嘗試2.如果出現問題,你來這裏請求我們的幫助。祝你好運! –
@Tobias F,數組的結構事先是未知的。它具有無限的嵌套深度和無限的兄弟元素。 – Xintrea