提取并转换多维数组

时间:2019-04-26 09:18:12

标签: php arrays multidimensional-array

我有一个来自api调用的数组。 我想先格式化它,然后再在视图中播放值。

这是我的数组

$myArray = array(
            array(
                array(
                    "Name" => "firstname",
                    "Value" => "Mat"
                ),
                array(
                    "Name" => "name",
                    "Value" => "Doe"
                ),
                array(
                    "Name" => "city",
                    "Value" => "Dallas"
                ),
                array(
                    "Name" => "date_of_birth",
                    "Value" => "1975-05-22T22:00:00Z"
                ),

            )
        );

我需要这样格式化

$myNewArray =
            array(
                "firstname" => "Mat",
                "name" => "Doe",
                "city" => "Dallas",
                "date_of_birth" => "1975-05-22T22:00:00Z"
            );

我正在尝试许多foreach,但没有成功。我正在寻找https://www.php.net/manual/en/ref.array.php上的函数数组,但不知道适合我的情况。

很好地指导我。谢谢

2 个答案:

答案 0 :(得分:4)

您可以获取有价值的数据,然后将其与键组合

$myArray = array_shift($myArray);
$result = array_combine(array_column($myArray, 'Value'), array_column($myArray, 'Name'));
print_r($result);

使用array_column的其他替代方法,

$myArray = array_shift($myArray);
$result = array_column($myArray, 'Value','Name');
print_r($result);

输出:

Array
(
    [firstname] => Mat
    [name] => Doe
    [city] => Dallas
    [date_of_birth] => 1975-05-22T22:00:00Z
)

Demo

array_column —从输入数组的单个列中返回值

答案 1 :(得分:0)

使用array_column

$res = array_column($myArray[0], 'Value','Name');
print_r($res);

OR

使用array_walk

$res = [];
array_walk($myArray[0], function($v, $k) use(&$res){
    $res[$v['Name']] = $v['Value'];
});
echo '<pre>';

结果

Array
(
 [firstname] => Mat
 [name] => Doe
 [city] => Dallas
 [date_of_birth] => 1975-05-22T22:00:00Z
)