php Map多维数组中的数据子集以创建关联数组

slhcrj9b  于 2023-04-28  发布在  PHP
关注(0)|答案(2)|浏览(109)

我有一些从get_defined_vars()返回的变量,我需要将两个数据子集Map在一起,形成一个平面关联数组。
输入:

[
    'lead' => [
        2 => 'fstory',
        4 => 'him',
        5 => 'trtr',
        1 => '508b38ee02f502.23680245.png',
    ],
    'form' => [
        'id' => 3,
    ],
    'fields' => [
        [
            'adminLabel' => 'formname',
            'id' => 2,
        ],
        [
            'adminLabel' => 'hisher',
            'id' => 4,
        ],
        [
            'adminLabel' => 'fname',
            'id' => 5,
        ],
        [
            'adminLabel' => 'sign',
            'id' => 1,
        ]
    ]
]

我需要把[fields][adminLabel]元素变成键,把[lead][#]元素变成值。
预期结果:

[
    'formname' => 'fstory'
    'fname' => 'trtr'
    'hisher' => 'his'
    'sign' => '508b38ee02f502.23680245.png',
]
qgelzfjb

qgelzfjb1#

试试这个,没试过.

$result_values  = $array['lead'];
$results        = array();
foreach ($array['form']['fields'] as $value) {
  if (is_array($value)) {
    $results[$value['adminLabel']] = $result_values[$value['id']];
  }  
}
print_r($results);
xt0899hw

xt0899hw2#

迭代fields子集,并使用id值访问相应的lead值。
经典foreach():(Demo

$result = [];
foreach ($array['fields'] as $row) {
    extract($row);
    $result[$adminLabel] = $array['lead'][$id];
}
var_export($result);

array_reduce():(Demo

var_export(
    array_reduce(
        $array['fields'],
        fn($result, $row) =>
            $result + [$row['adminLabel'] => $array['lead'][$row['id']]],
        []
    )
);

相关问题