Php 多维数组到格式化字符串

Php 多维数组到格式化字符串,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我正在尝试将多维数组转换为字符串,以便将其写入文件 场景:收集数组中的数据,将其转换为格式化字符串以提高可读性,然后将其写入文件 问题:当我尝试使用netsted foreach转换多维数组时,它无法按预期工作;大多数情况下,我通过Array输出或仅Array输出获取部分数据。另外,当我尝试infrade()函数时,它只获取最深的值 样本多维数组输出 Array ( [09_ERROR_TEXT_DESCR] => Array ( [LINE

我正在尝试将多维数组转换为字符串,以便将其写入文件

场景:收集数组中的数据,将其转换为格式化字符串以提高可读性,然后将其写入文件

问题:当我尝试使用netsted foreach转换多维数组时,它无法按预期工作;大多数情况下,我通过
Array
输出或仅
Array
输出获取部分数据。另外,当我尝试
infrade()
函数时,它只获取最深的值

样本多维数组输出

Array
(
    [09_ERROR_TEXT_DESCR] => Array
        (
            [LINES] => Array
                (
                    [0] => 1732
                    [1] => 1858
                )

            [COUNT] => 2
        )

    [12_ERROR_TEXT_DESCR] => Array
        (
            [LINES] => Array
                (
                    [0] => 1936
                )

            [COUNT] => 1
        )

    [14_ERROR_TEXT_DESCR] => Array
        (
            [LINES] => Array
                (
                    [0] => 1365
                    [1] => 1476
                    [2] => 1697
                )

            [COUNT] => 3
        )

    [15_ERROR_TEXT_DESCR] => Array
        (
            [LINES] => Array
                (
                    [0] => 1697
                )

            [COUNT] => 1
        )
)
09_ERROR_TEXT_DESCR|1732,1858|2
12_ERROR_TEXT_DESCR|1936|1
14_ERROR_TEXT_DESCR|1365,1476,1697|3
15_ERROR_TEXT_DESCR|1687|1
将其写入文件所需的字符串输出

Array
(
    [09_ERROR_TEXT_DESCR] => Array
        (
            [LINES] => Array
                (
                    [0] => 1732
                    [1] => 1858
                )

            [COUNT] => 2
        )

    [12_ERROR_TEXT_DESCR] => Array
        (
            [LINES] => Array
                (
                    [0] => 1936
                )

            [COUNT] => 1
        )

    [14_ERROR_TEXT_DESCR] => Array
        (
            [LINES] => Array
                (
                    [0] => 1365
                    [1] => 1476
                    [2] => 1697
                )

            [COUNT] => 3
        )

    [15_ERROR_TEXT_DESCR] => Array
        (
            [LINES] => Array
                (
                    [0] => 1697
                )

            [COUNT] => 1
        )
)
09_ERROR_TEXT_DESCR|1732,1858|2
12_ERROR_TEXT_DESCR|1936|1
14_ERROR_TEXT_DESCR|1365,1476,1697|3
15_ERROR_TEXT_DESCR|1687|1
注意:
我使用
文件内容($debug\u log\u path、$result\u set、LOCK\u EX)写入文件,因为在每次运行时,我希望文件被新数据覆盖。这就是我想将其转换为字符串的原因。

您可以通过数组上的
foreach
来实现您想要的,提取键、
行和
计数
值并将它们内爆为字符串。我已经演示了将每个字符串附加到一个数组中,您可以边写边写,也可以一次将整个数组写入一个文件:

$result_set = [];
foreach ($array as $key => $value) {
    $result_set[] = implode('|', array($key, implode(',', $value['LINES']), $value['COUNT']));
}
print_r($result_set);
输出:

Array
(
    [0] => 09_ERROR_TEXT_DESCR|1732,1858|2
    [1] => 12_ERROR_TEXT_DESCR|1936|1
    [2] => 14_ERROR_TEXT_DESCR|1365,1476,1697|3
    [3] => 15_ERROR_TEXT_DESCR|1697|1
)

使用或可能会更轻松。这将生成一个类似于以下内容的字符串,然后可以将其写入文件:

array (
  '09_ERROR_TEXT_DESCR' => 
  array (
    'LINES' => 
    array (
      0 => 1732,
      1 => 1858,
    ),
    'COUNT' => 2,
  ),
  '12_ERROR_TEXT_DESCR' => 
  array (
    'LINES' => 
    array (
      0 => 1936,
    ),
    'COUNT' => 1,
  ),
  '14_ERROR_TEXT_DESCR' => 
  array (
    'LINES' => 
    array (
      0 => 1365,
      1 => 1476,
      2 => 1697,
    ),
    'COUNT' => 3,
  ),
)

请参阅。

数组的起源是什么,更重要的是,代码在哪里?@Kevin我检查了从我的私人GIT或特定格式的数据库中获取的多个源代码的输入后,填充了此数组。我用上面提到的可能性编写的代码没有按预期工作,而且由于我的绝望,大多数代码都是胡说八道。基本上,你只需要在每个批中迭代,在批中,你需要先内爆
(,)
内部维度(
),然后在另一个数组中声明它们并再次内爆(
|
)与键一起显示最后一行。就像下面的答案一样,谢谢你的解释@Kevin,正如Nick在下面所说的,你所提到的正如预期的那样起作用。现在我想弄明白我怎么会在这么简单的任务上搞砸了:)@Nick,我一定是忘了记下你的答案,我以为我记下了。你的回答正好解决了我的问题。谢谢你,西丁,我相信@Nick的答案是最好的。使用PHP本机函数意味着不编写、维护或调试您自己的代码,包括将输出转换回PHP结构的代码。。使用
var\u export()
意味着您可以直接以PHP的形式执行字符串结果。使用
json\u encode()
意味着将您的数据转换为一种非常通用的数据交换格式,这种格式易于分析,并且易于阅读。必须为已经存在的东西编写自己的自定义实现,并且做得更好,这有什么好处?