【问题标题】:How to export PHP array where each key-value pair is in separate line?如何导出每个键值对位于单独行中的 PHP 数组?
【发布时间】:2016-09-15 04:04:38
【问题描述】:

我正在寻找与var_export() 等效的功能,它允许我将 PHP 数组导出为可解析的代码,但每条语句都应打印在单独的行中(因此每行都有自己独立的结构)。

目前这段代码:

<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export($a);
?>

将输出:

array (
  0 => 1,
  1 => 2,
  2 => 
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)

但是我希望输出为以下格式:

$foo = array()
$foo['0'] = 1
$foo['1'] = 2
$foo['2'] = array();
$foo['2']['0'] = 'a';
$foo['2']['1'] = 'b';
$foo['2']['2'] = 'c';

所以执行它会产生相同的原始数组。

我们的目标是以人类可以理解的格式管理非常大的数组,因此您可以通过复制和粘贴方法轻松取消设置某些选定的项目(其中每行都包含元素的完整路径)。通常,当您在屏幕上转储非常大的数组时,问题是您必须继续滚动很长时间才能找到其父级的父级,并且几乎不可能找出哪个元素属于哪个元素以及它们的完整路径是什么而不浪费很多时间。

【问题讨论】:

    标签: php arrays export var-dump


    【解决方案1】:

    目前我有found here(由ravenswd发布)这个简单的功能可以实现:

    function recursive_print ($varname, $varval) {
      if (! is_array($varval)):
        print $varname . ' = ' . var_export($varval, true) . ";<br>\n";
      else:
        print $varname . " = array();<br>\n";
        foreach ($varval as $key => $val):
          recursive_print ($varname . "[" . var_export($key, true) . "]", $val);
        endforeach;
      endif;
    }
    

    recursive_print('$a', $a); 的输出:

    $a = array();
    $a[0] = 1;
    $a[1] = 2;
    $a[2] = array();
    $a[2][0] = 'a';
    $a[2][1] = 'b';
    $a[2][2] = 'c';
    

    【讨论】:

      【解决方案2】:

      您可以使用json_encode 寻求一个简单的解决方案,如下所示。

      <?php
      $arrayA = array (1, 2, array ("a", "b", "c"));
      $arrayString=json_encode($a);
      $arrayB=json_decode($arrayString);
      ?>
      

      在这里,您所要做的就是使用json_encode 将数组编码为json(将返回一个字符串)。然后,您可以将生成的字符串存储在您想要的任何位置。

      当你读回那个字符串时,你必须调用json_decode才能获得原始的php数组。

      希望这是您想要实现的目标的简单解决方案。

      【讨论】:

        【解决方案3】:

        试试这个方法:

        <?php
        $sweet = array('a' => 'apple', 'b' => 'banana');
        $fruits = array('sweet' => $sweet, 'sour' => 'lemon');
        
        function print_item($item, $key){
            echo "$key contains $item\n";
        }
        
        array_walk_recursive($fruits, 'print_item');
        ?>
        

        数组遍历递归函数,将任何函数应用于数组中的所有元素。

        干杯!

        -奥拉洛

        【讨论】:

          猜你喜欢
          • 2016-11-30
          • 2013-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-18
          • 2016-03-08
          • 1970-01-01
          相关资源
          最近更新 更多