Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将多维数组存储为简单数组_Php_Arrays - Fatal编程技术网

Php 如何将多维数组存储为简单数组

Php 如何将多维数组存储为简单数组,php,arrays,Php,Arrays,我有一个数组,如下所示 Array ( [0] => [key-1] => Array ( [key-1-1] => 33 [key-1-2] => 22 ) [key-2] => -1 [key-3] => Array ( [data] => Array (

我有一个数组,如下所示

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_内容保存到外部php文件。我尝试了几个小时,尝试了var_export,multiple 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';

有人能帮你实现吗?

你可以用array\u walk\u recursive接近你想要的输出。麻烦的键是数字键

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

<?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',
  )