我们有一个多维关联数组。有必要在一个写在其他线性数组上的键上寻址一个数组的元素。如何通过另一个线性数组中的键访问多维数组的元素?
也就是说,有一个多维数据阵列和一个带钥匙的线性阵列:
$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