【问题标题】:traversing an array in php [duplicate]遍历php中的数组[重复]
【发布时间】:2012-11-15 21:47:28
【问题描述】:

可能重复:
Loop an array of array

所以我知道如何遍历偶数键 => 值(关联)的数组,但我有一个奇怪的数组,我需要遍历它并打印出值:

$object_array = array(
    'type' => 'I am type',
    array(
        'property' => 'value',
        'property_2' => 'value_2'
    )
);

我认为我能做的是:

foreach($object as $key=>$vlaue){
   //what now?
}

如您所见,我迷路了,我该如何通过下一个数组?

【问题讨论】:

    标签: php arrays associative-array


    【解决方案1】:

    你可以试试:

    function traverse($array) {
       foreach ($array as $key => $value) {
          if (is_array($value)) {
             traverse($array);
             continue;
          }
          echo $value;
       }
    }
    

    【讨论】:

      【解决方案2】:
      foreach($object as $key=>$value){
          if( is_array($value) ) {
              foreach($value as $key2=>$value2) {
                  //stuff happens
              }
          } else {
              //other stuff
          ]
      }
      

      【讨论】:

        【解决方案3】:

        试试:

        foreach($object_array as $value) {
          if(!is_array($value))
           echo $value;
           else {
            foreach($value as $m)
            echo $m; 
          }
         }
        

        Manual for foreach

        【讨论】:

          【解决方案4】:

          在你的 for 循环中你可以这样做:

          if(is_array($object[$key]))
              //process inner array here
          

          这取决于你的数组有多深,如果你有数组数组的数组......等等,不同的方法会更好,但如果你只有一个级别,这是一种非常简单的方法.

          【讨论】:

            【解决方案5】:

            好吧,你可以这样做:

            foreach($object_array as $key=>$value)
            {
                if(is_array($value) {
                    foreach($value as $k=>$v) {
                        echo $k." - ".$v;
                    }
                } else {
                    echo $key." - ".$value;
                }
            }
            

            【讨论】:

              【解决方案6】:

              array_walk_recursive() 的替代方案:

              function mydebug($value, $key) {
                  echo $key . ' => ' . $value . PHP_EOL;
              }
              
              array_walk_recursive($object_array, 'mydebug');
              

              如果您使用这些值做一些简单的事情(例如,只是 echo ing)会很方便。

              【讨论】:

                猜你喜欢
                • 2016-08-24
                • 1970-01-01
                • 2012-02-28
                • 2017-09-28
                • 2022-01-21
                • 2017-08-25
                • 1970-01-01
                • 2010-12-14
                • 2020-11-04
                相关资源
                最近更新 更多