【问题标题】:how can i get multidimensional array values using foreach?如何使用 foreach 获取多维数组值?
【发布时间】:2013-04-27 17:32:05
【问题描述】:

我想在不同的函数中使用多维数组。所以我将其作为全局变量(数组)。我创建了一个多维数组并将其作为全局变量以在不同的函数中访问。现在我如何获取值从它使用foreach循环? 这是我的代码

$test=array(
       array(
        "input1"=>"v1",
        "input2"=>"v2"),
        array(
         "input3"=>"v3",
         "input4"=>"v4")
      );

class testing
{
  function testp()
  {
    global $test;
    foreach($test as $key => $value)
    {
      echo $value;
    }
    var_dump($test);
    echo is_array($test);
  }
}

$obj = new testing();
$obj->testp();

我使用 is_array 和var_dump 来确认它是否是一个数组。 一切都很好 及其显示的错误抑制被忽略。现在我如何从中获取值?

【问题讨论】:

  • 缩进那个可怕的代码:)
  • 虽然不是你所要求的(sashkello 很好地涵盖了这一点)我强烈建议你摆脱使用全局,而是使用 setter 对象方法“设置”数组:函数 setData(数组 $data ) { $this->_data = $data; } .. 你会明白为什么一旦应用变得更大并且你的代码充满了全局变量。

标签: php arrays multidimensional-array foreach


【解决方案1】:

访问数组中的数组值的更简单的方法。

foreach($test as $array_value){

    if(is_array($array_value)) {
        foreach ($array_value as $value) {
             echo $value.'<br>';
        }
      }
    }

【讨论】:

    【解决方案2】:

    更一般的答案:

    public function visitArray($test)
    {
      foreach($test as $key=>$value)
      {
        if(is_array($value))
        {
          visitArray($value);
        }
        else
        {
          echo $value;
        }
      }
    }
    

    编辑

    如果不考虑键,不知道为什么要循环键和值

    【讨论】:

      【解决方案3】:

      它是数组数组,适用于高阶数组,也适用于进一步:

      foreach($test as $key => $value)
      {
         foreach($value as $k => $v){
            echo $v;
         }
      }
      

      这将依次呼应您的值 v1、v2、v3、v4。

      【讨论】:

      • 很好。现在我怎样才能获得 v3 而不是 v4 的值?
      • @raj,只要做一个计数器,它就会在 3 上跳出循环。
      猜你喜欢
      • 1970-01-01
      • 2019-09-17
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2013-11-29
      • 2017-04-26
      • 1970-01-01
      相关资源
      最近更新 更多