php - 如何将多维数组存储到简单数组
问题描述
我有一个数组,如下所示。
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';
有人可以帮助实现它吗?
解决方案
您可以使用 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',
)
推荐阅读
- bluetooth - 蓝牙如何识别设备类型?
- javascript - 在 Promise 中正确响应不使用 setState 更新状态
- java - 在以下任何来源中都找不到插件 [id: 'org.springframework.boot', version: '2.1.7.RELEASE']
- css - 标签是否延迟 DomContentLoaded 事件?
- vue.js - Vuetify - 带有 vue 组件的选项卡
- java - 如何在方法中设置标记?
- python-3.x - 为什么在pymysql中不能用格式函数替换占位符?
- ios - Swift 4 委托不适用于标签栏控制器
- gradle - 如何将此 Gradle 配置更改为 Gradle Kotlin DSL?
- django - 在 Django Rest Framework 中通过 URL 中的 pk 获取对象