PHP-访问多维数组值
经过几个小时的混乱、流汗和拔头发,我仍然无法访问这些值。我想循环第一级数组,使用一个基本的“foreach”循环就足够简单了,但我似乎无法到达第二个子数组上的“['fitability']”数组。我环顾了四周,但除了基本的数组教程之外,似乎找不到任何其他内容,这些教程似乎没有深入研究循环 我正在尝试访问嵌套/子数组ie'['Species_name']'中的值 我不想使用关联键,因为排序有点问题PHP-访问多维数组值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,经过几个小时的混乱、流汗和拔头发,我仍然无法访问这些值。我想循环第一级数组,使用一个基本的“foreach”循环就足够简单了,但我似乎无法到达第二个子数组上的“['fitability']”数组。我环顾了四周,但除了基本的数组教程之外,似乎找不到任何其他内容,这些教程似乎没有深入研究循环 我正在尝试访问嵌套/子数组ie'['Species_name']'中的值 我不想使用关联键,因为排序有点问题 Array ( [0] => Array (
Array
(
[0] => Array
(
[id] => 1
[name] => Bradeley Hall Pool
[postcode] => CW1 5QN
[lat] => 53.10213
[lon] => -2.41069
[size] => 1.60
[pegs] => 21
[distance] => 26.6
)
[1] => Array
(
[id] => 2
[name] => Farm Pool
[postcode] => CW9 6JQ
[lat] => 53.320502
[lon] => -2.549049
[size] => 0.88
[pegs] => 8
[distance] => 15.4
[suitability] => Array
(
[0] => Array
(
[fk_water_id] => 2
[fk_species_id] => 4
[species_name] => Barbel
[species_rating] => 1
[record_id] => 1
[weight_kg] => 2.721554
[length_cm] => 40
[height_cm] => 30
)
)
)
)
可能让您感到困惑的是,适应性是一个数组数组,而不仅仅是一个数组,因此在一个示例中,如果您希望获得第一个第二个顶级元素的species_name属性,您可以使用
$array[1]["suitability"][0]["species_name"];
值得注意的是,您的第一个数组不包含“适合性”值,因此无法访问该值。在foreach循环中,可以使用类似于以下内容的构造:
foreach($array as $value){
if (isset($value["suitability"])){
echo $value["suitability"][0]["species_name"];
}
}
你可以看看
这允许您在嵌套的数组迭代器上迭代多次。如果你不使用任何数组迭代器,那么你应该考虑尝试它们。 < P> Iracicot的回答帮助我找到了用递归子类来访问递归数组的值的方法,如下所示。我的解决方案最终使用了更有用的递归迭代器类。请记住一个非常有用的事实,即最终产品是一个扁平阵列,我个人认为它更容易使用
<table style="border:2px;">
<tr>
<th>Time</th>
<th>Service Number</th>
<th>Destination</th>
</tr>
<?php
foreach($stops as $buses){
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($buses));
$bus = (iterator_to_array($iterator,true));
print('<tr><td>'.$bus['AimedDepartureTime'].'</td><td>'.$bus['PublishedLineName'].'</td><td>'.$bus['DirectionName'].'</td></tr>');
}
?>
</table>
时间
服务号码
目的地
要从多维数组中获取嵌套元素值(可选回退到默认值),可以从以下位置使用:
Arr::get($array,“$index1.attability.$index2.species\u name”)
//或者使用密钥数组
Arr::get($array,[$index1,'适合性',$index2,'物种名称')
当您说“我不想使用关联键,因为排序有点问题”时,您是什么意思。欢迎使用堆栈溢出。谢谢你写了这么一个好的、详细的问题+1.我只是计算内部的数组post,然后在foreach中使用var_dump out side,但它不起作用,如果您不介意的话,这里是我的脚本,您在循环的每个迭代中都覆盖变量$kuantity。您可能看到的是上一次迭代的值代码>它不工作,我的格式如上图所示,这里是reall格式