php - 动态重命名多维数组中的多个键
问题描述
我正在研究将数组导入另一个数组的代码。
将持续存在的阵列汽车:
array (
0 =>
array (
'Brand' => 'Volvo',
'Stock Value' => 100,
'Models' => 96,
),
1 =>
array (
'Brand' => 'BMW',
'Stock Value' => 60,
'Models' => 59,
),
2 =>
array (
'Brand' => 'Toyota',
'Stock Value' => 110,
'Models' => 100,
),
)
我要导入的数组emobile :
array (
0 =>
array (
'Maker' => 'Tesla',
'Price' => 100,
'Factories' => 96,
'Employees' => 10,
),
1 =>
array (
'Maker' => 'Nikola',
'Price' => 60,
'Factories' => 59,
'Employees' => 10,
),
2 =>
array (
'Maker' => 'Thor',
'Price' => 110,
'Factories' => 100,
'Employees' => 10,
),
)
发布数据$pst_data
(键 = 目标结构,值 = 当前结构,--- 未分配):
array (
'Brand' => 'Maker',
'Stock_Value' => '---',
'Models' => '---',
'flag' => '---',
)
我的代码。在当前阶段,我可以让它碰巧显示导入数组中的一个值,例如制造商的名称,或者我选择两个(“Stock Value”作为第二个)并且有结构,但没有值。
foreach ($kar as $xk => $vx) {
if(!in_array($vx, $pst_data)){
foreach ($emobile as &$xkone) {
unset($xkone[$vx]);
}
}
else {
foreach ($pst_data as $pstd => $pstd_val) {
foreach ($emobile as &$xkone) {
$xkone[$pstd] = $xkone[$pstd_val];
unset($xkone[$pstd_val]);
}
}
}
}
我的目标结果是:
Array
(
[0] => Array
(
[Brand] => Volvo
[Stock Value] => 100
[Models] => 96
[flag] => 1
)
[1] => Array
(
[Brand] => BMW
[Stock Value] => 60
[Models] => 59
[flag] => 1
)
[2] => Array
(
[Brand] => Toyota
[Stock Value] => 110
[Models] => 100
[flag] => 1
)
[3] => Array
(
[Brand] => Tesla
[Stock Value] => 100
[Models] =>
[flag] =>
)
[4] => Array
(
[Brand] => Nikola
[Stock Value] => 60
[Models] =>
[flag] =>
)
[5] => Array
(
[Brand] => Thor
[Stock Value] => 110
[Models] =>
[flag] =>
)
)
所以我的目标是选择一个数组导入另一个数组。在一个表单中,我将导入数组中的键分配给现有数组并提交它以创建一个数组,其中包含键并将键分配为值。如果指定的值(如 Maker)存在,则此键将保留在导入的数组中。所有其他键都将被删除。以下是键的重命名,例如从 Maker 到 Brand,以及从 Price 到 Stock Value。然后我会将这两个数组与 array_merge 合并。
如何解决问题以使用导入数组中的单个值和多个值?
使用以下命令编辑单个数据分配的示例$pst_data
:
array (
'Brand' => 'Maker',
'Stock_Value' => '---',
'Models' => '---',
'flag' => '---',
)
以及第一个新插入数组的示例结果:
[3] => Array
(
[Brand] => Tesla
[Stock_Value] =>
[Models] =>
[flag] =>
)
使用分配的多个数据的示例$pst_data
:
array (
'Brand' => 'Maker',
'Stock_Value' => 'Price',
'Models' => '---',
'flag' => '---',
)
以及第一个新插入数组的示例结果:
[3] => Array
(
[Brand] =>
[Stock_Value] =>
[Models] =>
[flag] =>
)
解决方案
切换循环。在外循环中,遍历数据。在内部循环中,遍历属性。
为映射项使用新变量。它可以在循环结束时替换$xkone
以修改现有数组。
foreach ($emobile as &$xkone) {
$car = [];
foreach ($pst_data as $pstd => $pstd_val) {
$car[$pstd] = $xkone[$pstd_val] ?? null;
}
$xkone = $car;
}
见在线演示
推荐阅读
- ionic-framework - '{ filepath: string; 类型的参数 webviewPath:字符串;}' 不可分配给“照片”类型的参数
- azure - Azure Cosmos Db 作为键值存储索引模式
- flutter - 在哪里可以找到应用内购买的恢复顺序
- c++ - 连接被破坏后使用集合是否安全?(mongocxx)
- python - 举一个在 Airflow 中使用 GrpcHook 和 GrpcOperator 的例子
- palantir-foundry - 利用 Foundry API,您如何获取数据集的数量或行数和列数?
- android - 如何使用 Gradle 任务从命令行/脚本加速运行检测测试
- linux - 如何修复找不到 bash az 命令
- python - LSTM 无法将张量转换为 Numpy 数组(未实现错误)
- c++ - 定义静态成员