Manish Jangir
Manish Jangir

Reputation: 5437

Loop through each key and value of php multidimensional array

I have the following array:

<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
                )

        )

)

I want to get all the strings in this array using while loop. I mean keys of the whole array that are not an array itself.

I tried the following code:

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

Can I have any better idea?

Upvotes: 2

Views: 1157

Answers (4)

Manjeet Sharma
Manjeet Sharma

Reputation: 174

simple function can achive this

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

    return $return;
}

Usage: finalKeys($multidimensional_array);

Upvotes: 0

RajeshK
RajeshK

Reputation: 461

I didn't checked your code but change to your below code will result what you expected. If you want to get an array of messages only then use public var to store the value in place of echoing it.

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

   $this->getInternalErorrString($array);

Upvotes: 0

user1978142
user1978142

Reputation: 7948

Alternatively, you could use SPL RecursiveArrayIterator to get the values. Consider this example:

$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;
}

Sample Output:

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
)

Upvotes: 1

mfrascati
mfrascati

Reputation: 81

You can check the php function array_values and the examples in the documentation page.

See also How to “flatten” a multi-dimensional array to simple one in PHP?

Upvotes: 0

Related Questions