4

我有一个类型的数组

$records = array(
array(
    'id' => 2135,
    'first_name' => 'John',
    'last_name' => 'Cena',
),
array(
    'id' => 5623,
    'first_name' => 'Peter',
    'last_name' => 'Doe',
));

我想以以下格式显示输出

[2135] => John Cena
[5623] => Peter Doe

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

$names = array_column($records, 'first_name' . 'last_name', 'id');

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

4

5 回答 5

5

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

array_column只返回一列,如PHP 手册条目中所述

(PHP 5 >= 5.5.0,PHP 7)

array_column — 返回输入中单列的值

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

$names = array_reduce($records, function ($result, $item) {
    $result[$item['id']] = $item['first_name'] . ' ' . $item['last_name'];
    return $result;
});
于 2018-09-17T05:20:36.577 回答
5

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

尝试这个

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

   print_r($newArray); 

输出

Array
(
    [2135] => John Cena
    [5623] => Peter Doe
)
于 2018-09-17T05:10:11.230 回答
1

您可以通过创建另一个数组来实现它。只需使用foreach循环将子数组的值合并到新创建的数组中。

$records = array(
array(
    'id' => 2135,
    'first_name' => 'John',
    'last_name' => 'Cena',
),
array(
    'id' => 5623,
    'first_name' => 'Peter',
    'last_name' => 'Doe',
));

foreach($records as $data)
{
  $temp[$data['id']] = $data['first_name'].' '.$data['last_name'];
}
echo "<pre>";
print_r($temp);



// Output

Array
(
    [2135] => John Cena
    [5623] => Peter Doe
)
于 2018-09-17T05:24:33.893 回答
1

array_column 可以解决这种问题,但在这里它不能连接 first_name 和 last_name 键,所以你也可以试试这个代码 -

$records = array(
array(
    'id' => 2135,
    'first_name' => 'John',
    'last_name' => 'Cena',
),
array(
    'id' => 5623,
    'first_name' => 'Peter',
    'last_name' => 'Doe',
));

$tmp = [];

foreach($records as $key) {
    $tmp[$key["id"]] = $key["first_name"] . " " . $key["last_name"];
}

print_r($tmp); // Array ( [2135] => John Cena [5623] => Peter Doe );
于 2018-09-17T05:29:36.657 回答
0

我猜没有 php 内置函数可以做到这一点。您可以遍历数组并将它们连接起来。

$records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Cena',
),
array(
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe', 
));

$newArray = array();
foreach($records as $data)
{
$index = "";
$value = "";
$indexLoop = 1;
foreach($data as $reckey => $recValue)
{
    if($indexLoop ==1)
    {
        $index = $recValue; 
    }else{
            $value .= $recValue." ";
         }  

    $indexLoop++;
}

$newArray[$index] = $value;
}

 echo "<pre>"; print_r($newArray);

谢谢

于 2018-09-17T05:31:03.247 回答