首页 > 解决方案 > 如何将多维数组存储到简单数组

问题描述

我有一个数组,如下所示。

Array
(
    [0] =>
    [key-1] => Array
        (
            [key-1-1] => 33
            [key-1-2] => 22
        )

    [key-2] => -1

    [key-3] => Array
        (
            [data] => Array
                (
                    [other_data] => Array
                        (
                            [0] => data1
                            [1] => data2
                        )
                )

        )

    [key-4] => data3
    [key-5] => data4
)

我需要将它们转换为更简单的最终值形式,如下所示,并使用 file_put_contents 保存到外部 php 文件中。我尝试了几个小时,我尝试了 var_export、多个 foreach 并取得了一定程度的成功,但并不完全是我想要的。

$value['key-1-1'] = '33';
$value['key-1-2'] = '22';
$value['other_data'] = array('data1', 'data2');
$value['key-4'] = 'data3';
$value['key-5'] = 'data4';

有人可以帮助实现它吗?

标签: phparrays

解决方案


您可以使用 array_walk_recursive 稍微接近您想要的输出。麻烦的键是数字键。

如果您只有一个 other_data 子数组,您可以稍微调整下面的输出。您将获得类似数字键的覆盖值。所以这个方法真的取决于你的数据。

<?php

$data = 
array
(
    '0' =>'',
    'key-1' => array
        (
            'key-1-1' => 33,
            'key-1-2' => 22
        ),
    'key-2' => -1,
    'key-3' => array
        (
            'data' => array
                (
                    'other_data' => array
                        (
                            '0' => 'data1',
                            '1' => 'data2'
                        )
                )
        ),
    'key-4' => 'data3',
    'key-5' => 'data4'
);

array_walk_recursive($data, function($v, $k) use (&$result) {
    $result[$k] = $v;
});

var_export($result);

输出:

array (
    0 => 'data1',
    'key-1-1' => 33,
    'key-1-2' => 22,
    'key-2' => -1,
    1 => 'data2',
    'key-4' => 'data3',
    'key-5' => 'data4',
  )

推荐阅读