将二维数组转换为平面关联数组,其中一列作为键,其他列用空间内爆

Bib*_*yal 7 php arrays dictionary multidimensional-array

我有一个类型数组

$records = array(
array(
    'id' => 2135,
    'first_name' => 'John',
    'last_name' => 'Cena',
),
array(
    'id' => 5623,
    'first_name' => 'Peter',
    'last_name' => 'Doe',
));
Run Code Online (Sandbox Code Playgroud)

我想以以下格式显示输出

[2135] => John Cena
[5623] => Peter Doe
Run Code Online (Sandbox Code Playgroud)

我一直在使用以下代码来尝试显示我的预期结果,但它不起作用。

$names = array_column($records, 'first_name' . 'last_name', 'id');
Run Code Online (Sandbox Code Playgroud)

如何将两列数组连接成一列?

shu*_*715 7

您可以使用 foreach 循环创建一个新数组。

尝试这个

  $newArray = [];
    foreach($records as $key => $value) {
      $newArray[$value['id']]= $value['first_name']." ".$value['last_name'];          
    }

   print_r($newArray); 
Run Code Online (Sandbox Code Playgroud)

输出

Array
(
    [2135] => John Cena
    [5623] => Peter Doe
)
Run Code Online (Sandbox Code Playgroud)

  • `$key` 从未被使用过,因此没有理由在循环中声明它。 (2认同)

mul*_*uin 7

您当前的代码不起作用的原因是您要求 PHP 在数组中查找$recordsfirst_namelast_name不存在的

\n\n

array_column仅返回单个列,如PHP 手册条目中所述

\n\n
\n

(PHP 5 >= 5.5.0、PHP 7)

\n\n

array_column \xe2\x80\x94 返回输入中单个列的值

\n
\n\n

您需要循环遍历数组并手动连接字符串。您可以使用的一项功能是array_reduce

\n\n
$names = array_reduce($records, function ($result, $item) {\n    $result[$item[\'id\']] = $item[\'first_name\'] . \' \' . $item[\'last_name\'];\n    return $result;\n});\n
Run Code Online (Sandbox Code Playgroud)\n