Intereting Posts

Прокрутите каждый ключ и значение многомерного массива php

У меня есть следующий массив:

<pre>Array ( [student] => Array ( [admission_no] => Array ( [isEmpty] => Please enter Admission No ) [admission_date] => Array ( [isEmpty] => Please enter Admission Date ) ) [student_personal_details] => Array ( [first_name] => Array ( [isEmpty] => Please enter First Name ) [gender] => Array ( [isEmpty] => Please select Gender ) [birth_date] => Array ( [isEmpty] => Please enter Birth Date ) ) [student_gardian_details] => Array ( [first_name] => Array ( [isEmpty] => Please enter Gardian First Name ) ) [student_education_details] => Array ( [roll_no] => Array ( [isEmpty] => Please enter Pin Code ) ) ) 

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

Я попробовал следующий код:

 private function getInternalErorrString($array) { while (list($var, $val) = each($array)) { if(is_array($var)) { $this->getInternalErorrString($var); } else { return $val; } } } 

Могу ли я лучше понять?

Solutions Collecting From Web of "Прокрутите каждый ключ и значение многомерного массива php"

Кроме того, вы можете использовать SPL RecursiveArrayIterator для получения значений. Рассмотрим этот пример:

 $values = array( 'student' => array( 'admission_no' => array('isEmpty' => 'Please enter Admission No'), 'admission_date' => array('isEmpty' => 'Please enter Admission Date'), ), 'student_personal_details' => array( 'first_name' => array('isEmpty' => 'Please enter First Name'), 'gender' => array('isEmpty' => 'Please enter Gender'), 'birth_date' => array('isEmpty' => 'Please enter Birth Date'), ), 'student_gardian_details' => array( 'first_name' => array('isEmpty' => 'Please enter Gardian First Name'), ), 'student_education_details' => array( 'roll_no' => array('isEmpty' => 'Please enter Pin Code'), ),); $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($values)); foreach($iterator as $key => $value) { $data[] = $value; } 

Результат выборки:

 Array ( [0] => Please enter Admission No [1] => Please enter Admission Date [2] => Please enter First Name [3] => Please enter Gender [4] => Please enter Birth Date [5] => Please enter Gardian First Name [6] => Please enter Pin Code ) 

Вы можете проверить php function array_values и примеры на странице документации.

См. Также Как «сгладить» многомерный массив до простого в PHP?

Я не проверял ваш код, но изменение вашего кода ниже приведет к тому, что вы ожидали. Если вы хотите получить массив сообщений только тогда, используйте public var, чтобы сохранить значение вместо эхо-сигнала.

  private function getInternalErorrString($array) { foreach($array as $val) { if(is_array($val)) { $this->getInternalErorrString($val); } else { echo $val ."<br/>"; } } } $this->getInternalErorrString($array); 

простая функция может

 function finalKeys($array) { global $return; foreach($array as $key) { if (is_array($key)) { finalKeys($key); } else { $return[] = $key; } } return $return; } 

Использование: finalKeys($multidimensional_array);