【问题标题】:How i can print this array in php ? is it possible to print this array?我如何在 php 中打印这个数组?可以打印这个数组吗?
【发布时间】:2021-04-03 19:58:25
【问题描述】:

我必须打印数组中存在的所有值,你可以看到这个数组包含多维数组以及关联数组。

$array = [1,2,[3 => [3 => [4,5,6,[7,8,[9=>[10,11,12,13],14=>15],16=>[17,18,19=>20]]]]]];

输出应该是这样的: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 要么 打印每个元素

【问题讨论】:

  • 有很多方法可以打印该数组。在不知道您的预期输出是什么样子的情况下,很难回答。请edit您的问题表明您希望如何显示数组。
  • @Nick 抱歉这个令人困惑的问题
  • 看起来您想打印 一些 键但 所有 值。你如何决定打印哪些键。例如,获得3 的唯一方法是打印3 键之一,但是有多个012 键,似乎都没有打印。
  • 实现递归方法

标签: php arrays multidimensional-array associative-array


【解决方案1】:

我调用的这个函数magic可以解决你的问题:

function magic($array) {
    $indexCounter = 0;
    foreach ($array as $elementIndex => $elementValue) {
        if (is_array($elementValue)) {
            if ($indexCounter != $elementIndex) {
                echo $elementIndex;
            }
            magic($elementValue);
        } else {
            $arrayIndex = array_search($elementValue, $array);
            if ($indexCounter == $arrayIndex) {
                echo $elementValue;
            } else {
                echo $arrayIndex;
                echo $elementValue;
            }
        }
        $indexCounter ++;
    }
}

例子

$array = [1,2,[3=>[4=>[5,6]]]];

magic($array);

function magic($array) {
    $indexCounter = 0;
    foreach ($array as $elementIndex => $elementValue) {
        if (is_array($elementValue)) {
            if ($indexCounter != $elementIndex) {
                echo $elementIndex;
            }
            magic($elementValue);
        } else {
            $arrayIndex = array_search($elementValue, $array);
            if ($indexCounter == $arrayIndex) {
                echo $elementValue;
            } else {
                echo $arrayIndex;
                echo $elementValue;
            }
        }
        $indexCounter ++;
    }
}

输出

123456

还有你的榜样

$array = [1,2,[3 => [3 => [4,5,6,[7,8,[9=>[10,11,12,13],14=>15],16=>[17,18,19=>20]]]]]];

magic($array);

function magic($array) {
    $indexCounter = 0;
    foreach ($array as $elementIndex => $elementValue) {
        if (is_array($elementValue)) {
            if ($indexCounter != $elementIndex) {
                echo $elementIndex;
            }
            magic($elementValue);
        } else {
            $arrayIndex = array_search($elementValue, $array);
            if ($indexCounter == $arrayIndex) {
                echo $elementValue;
            } else {
                echo $arrayIndex;
                echo $elementValue;
            }
        }
        $indexCounter ++;
    }
}

输出

12334567891011121314151617181920

【讨论】:

    【解决方案2】:

    使用 Print_r() print_r 函数用于在 PHP 编程语言中以人类可读的形式返回一个数组。 print_r 函数用于在 PHP 编程语言中以人类可读的形式返回一个数组。菜单。家。 Print_r() PHP 函数。搜索。

    当显示到屏幕或演示媒体时,程序员通常使用 print_r() 函数以人类可读的方式显示数组的完整数据。为了将数组的内容和数据写入文件,我们可以使用 print_r() 或 var_export() 函数返回输出而不是打印。

    【讨论】:

      【解决方案3】:

      一种解决方案可能是:

      $array = [
          1,
          2,
          [ 3 => [ 3 => [ 4, 5, 6, [ 7, 8, [ 9 => [ 10, 11, 12, 13 ], 14 => 15 ], 16 => [ 17, 18, 19 => 20 ] ] ] ] ],
      ];
      $out = [];
      array_walk_recursive(
          $array,
          function ($v) use (&$out) {
              $out[] = $v;
          }
      );
      
      echo implode(', ', $out);
      // 1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 15, 17, 18, 20
      

      如果你也想打印所有的键,那么你可以使用这个:

      array_walk_recursive(
          $array,
          function ($v, $k) use (&$out) {
              $out[] = $k; // here you could check, if you want to add the $k (array key) to the output.
              $out[] = $v;
          }
      );
      

      【讨论】:

      • 我认为这两种解决方案都缺少数字 9 和 16。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多