【问题标题】:Multi Dimensional array value print without any key不带任何键的多维数组值打印
【发布时间】:2014-08-25 07:19:50
【问题描述】:

我想打印一个我不知道数组值维度的数组。 现在的事实是,当我使用echo '<pre>'print_r($array) 时,它将显示Keyvalue 以及<br> 显示。 但我只想显示数组的值而不是键。 $array 可能包含多维数组值或单个值或两者兼有。

【问题讨论】:

标签: php arrays foreach


【解决方案1】:

你必须使用递归函数:

$array_list = array('a',array(array('b','c','d'),'e')); // Your unknown array
print_array($array_list);
function print_array($array_list){
    foreach($array_list as $item){
        if(is_array($item)){
            print_array($item);
        }else{
            echo $item.'<br>';
        }
    }
}

【讨论】:

    【解决方案2】:

    试试这个Recursive函数

    function print_array($array, $space="")
    {
        foreach($array as $key=>$val)
        {
            if(is_array($val))
            {
                $space_new = $space." ";
                print_array($val, $space_new);
            }   
            else
            {
                echo $space." ".$val." ".PHP_EOL;
            }
        }
    }
    

    Demo

    【讨论】:

      【解决方案3】:

      简而言之,您可以使用recursive function 来实现您想要实现的目标:

      function print_no_keys(array $array){
          foreach($array as $value){
              if(is_array($value)){
                  print_no_keys($value);
              } else {
                  echo $value, PHP_EOL;
              }
          }
      }
      

      另一种方法是使用array_walk_recursive()


      如果你想使用缩进,那么试试这个:

      function print_no_keys(array $array, $indentSize = 4, $level = 0){
          $indent = $level ? str_repeat(" ", $indentSize * $level) : '';
      
          foreach($array as $value){
              if(is_array($value)){
                  print_no_keys($value, $indentSize, $level + 1);
              } else {
                  echo $indent, print_r($value, true), PHP_EOL;
              }
          }
      }
      

      示例:

      <?php
      header('Content-Type: text/plain; charset=utf-8');
      
      $a = [1, [ 2, 3 ], 4, new stdClass];
      
      function print_no_keys(array $array, $indentSize = 4, $level = 0){
          $indent = $level ? str_repeat(" ", $indentSize) : '';
      
          foreach($array as $value){
              if(is_array($value)){
                  print_no_keys($value, $indentSize, $level + 1);
              } else {
                  echo $indent, print_r($value, true), PHP_EOL;
              }
          }
      }
      
      print_no_keys($a);
      ?>
      

      输出:

      1
          2
          3
      4
      stdClass Object
      (
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-24
        • 2020-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多