Nested foreach php

288
   36
      123
      456
      789
29
   36
      123
      456
      789
295
   36
      123
      456
      789

288,29,295 is my first array 36,36,36 is my array array and 123,456,789 is my other array.

I want to display

288
   36
      123
29
   36
      456
295
   36
      789

Here is my code

$nos = $_POST['nos'];
$nos2 = $_POST['nos2'];
$nos3 = $_POST['nos3'];
    foreach($nos as $nbs)
    {
        echo $nbs."<br>";   
        foreach($nos2 as $nbs2)
        {
            echo "&nbsp;&nbsp;&nbsp;".$nbs2."<br>";
            foreach($nos3 as $nbs3)
            {
                echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$nbs3."<br>";

            }
            break;
        }
    }

how can i do this using foreach
help me please.

+4
source share
4 answers

Use a loop instead:

    $nos = $_POST['nos'];
    $nos2 = $_POST['nos2'];
    $nos3 = $_POST['nos3'];
    for($i = 0 ; $i < count($nos) ; $i++){
      if(isset($nos[$i])) echo $nos[$i]."<br>";
      if(isset($nos2[$i])) echo "&nbsp;&nbsp;&nbsp;".$nos2[$i]."<br>";
      if(isset($nos3[$i])) echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$nos3[$i]."<br>";
    }

Or go like this:

    $nos = $_POST['nos'];
    $nos2 = $_POST['nos2'];
    $nos3 = $_POST['nos3'];
    foreach($nos as $i => $n){
      echo $n."<br>";
      if(isset($nos2[$i])) echo "&nbsp;&nbsp;&nbsp;".$nos2[$i]."<br>";
      if(isset($nos3[$i])) echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$nos3[$i]."<br>";
    }

EDIT

If you do not have a numeric key or other index, you can change the destination with array_values http://php.net/manual/en/function.array-values.php

    $nos = array_values($_POST['nos']);
    $nos2 = array_values($_POST['nos2']);
    $nos3 = array_values($_POST['nos3']);

https://eval.in/671937

+3
source

If you just debug the contents of your nested array and want to look at it in a friendly way, you can try:

print_r($my_nested_array) - .

var_dump($my_nested_array) - .

0

, , foreach $nos3 ( foreach)

$counts = 0;
foreach($nos as $nbs)
{   
    echo $nbs."<br>";   
    foreach($nos2 as $nbs2)
    {
        echo "&nbsp;&nbsp;&nbsp;".$nbs2."<br>";
        $sub_counts = 0;
        foreach($nos3 as $nbs3)
        {
            if($counts == $sub_counts)
            {
                echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$nbs3."<br>";
            }           
            $sub_counts ++;
        }
        break;
    }
    $counts ++;
}

, .

DEMO

-1
    $nos = $_POST['nos'];
    $nos2 = $_POST['nos2'];
    $nos3 = $_POST['nos3'];

    foreach($nos as $nbs) {
        echo $nbs . "<br />";   

        foreach($nos2 as $nbs2) {
            echo "&nbsp;&nbsp;&nbsp;" . $nbs2 . "<br />";

            foreach($nos3 as $nbs3) {
                echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . $nbs3 . "<br />";
                break; // stop the looping, in this case after the first time
            }

            break; // stop the looping, in this case after the first time
        }

        break; // stop the looping, in this case after the first time
    }
-1
source

Source: https://habr.com/ru/post/1659826/


All Articles