PHP – Доступ к значениям многомерных массивов

После нескольких часов беспорядка, потливости и вытягивания волос я все еще не могу получить доступ к этим ценностям. Я хочу пропустить первый уровень массивов, и это достаточно просто с базовым циклом foreach, но я не могу добраться до массива '[' пригодности ']' во втором вспомогательном массиве. Я огляделся, но, похоже, не мог получить ничего, кроме действительно простых обучающих материалов, которые, похоже, не вникают в цикл.

Я пытаюсь получить доступ к значениям в вложенном / подмножестве, т.е. '[' Species_name ']'.

Я не хочу использовать ассоциативные ключи, поскольку сортировка – это немного проблема.

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"]; } } 

Вы можете взглянуть на PHP: класс RecursiveArrayIterator

Это позволяет вам перебирать многократные вложенные ArrayIterator. Если вы не используете ArrayIterator, вам следует попробовать попробовать их.