如何在php中获取多维混合数组?

时间:2016-06-01 08:19:01

标签: php arrays multidimensional-array associative-array

我将这个数组存储在一个变量中: -

Array ( 
  [0] => Array ( 
          [date] => 06/01/2016 - 06/30/2016 
          [0] => Array ( [0] => 1 [1] => 34 [2] => 2 [3] => 55 ) 
          [1] => Array ( [0] => 2 [1] => 55 [2] => 55 [3] => 100 ) 
          [2] => Array ( [0] => 3 [1] => 60 [2] => 100 [3] => 500 ) 
  ) 
) 

这是我打印它的代码:

foreach($tables as $table)
{
    foreach($table as $tier)
    {
        echo $tier[0]."<br>";
        echo $tier[1]."<br>";
        echo $tier[2]."<br>";
        echo $tier[3]."<br>";
    }
}

这就是它的印刷品:

0
6
/
0
1
34
2
55
2
55
55
100
3
60
100
500

这就是我所期待的:

1
34
2
55
2
55
55
100
3
60
100
500

如何使用foreach()获得所需的结果?

5 个答案:

答案 0 :(得分:2)

试试这个:不包括@Jon Stirling建议的日期。

foreach($tables as $table){
    foreach($table as $k => $tier){
        if($k !== 'date')
            echo $tier[0]."<br/>".$tier[1]."<br/>".$tier[2]."<br/>".$tier[3]."<br/>";
    }
}

新版本就在这里,在!==条件中添加if之后,前一个版本也运行良好。

$tables = array(
            array ( 
              'date' => "06/01/2016 - 06/30/2016",
              array ( 1, 34, 2, 55 ),
              array ( 2, 55, 55, 100 ), 
              array ( 3, 60, 100, 500 )
            )
        );
foreach($tables as $table){
    foreach($table as $k => $tier){
        if(!is_array($tier))
            continue;
        foreach($tier as $val)
            echo $val."\n";
    }
}

更新了问题更新。

答案 1 :(得分:2)

问题是df1 # V1 V2 V3 V4 #1 3 9 6 9 #2 3 3 4 2 #3 7 7 7 1 #4 5 8 7 5 #5 6 3 3 2 字段被解释为层。跳过这样的非数字层:

date

以下是此工作的一个示例:

foreach ($tables as $table)
{
    foreach ($table as $index => $tier)
    {
       if (!is_numeric($index))
           continue;

        echo $tier[0]."<br>";
        echo $tier[1]."<br>";
        echo $tier[2]."<br>";
        echo $tier[3]."<br>";
    }
}

答案 2 :(得分:0)

我假设你的数组只有0个索引,所以在这里直接调用那个数组并传递数组键date

  比较“日期”时

使用!==

     

不要使用!= ,它将无效,因为“date”将转换为int 0所以在“date”和0

中相等
foreach ($table[0] as $k=>$tier) {
    if($k !== 'date'){
        echo $tier[0]."<br>";
        echo $tier[1]."<br>";
        echo $tier[2]."<br>";
        echo $tier[3]."<br>";
     }
}

答案 3 :(得分:0)

更新@RivnatNasah回答

foreach ($tables as $table) {
    foreach ($table as $key => $values){
        if ($key !== 'date') {
            foreach ($values as $value) {
                echo $value . PHP_EOL;
            }
        }
    }
}

答案 4 :(得分:-1)

foreach($tables as $table)
{
    foreach($table as $key => $tier)
    {
        if ($key !== 'date')
        {
            echo $tier[0]."<br>";
            echo $tier[1]."<br>";
            echo $tier[2]."<br>";
            echo $tier[3]."<br>";
       }
    }
}

你真的很接近你的代码。