使用 array_column 将两列连接成一列
Concatenate two columns into one using array_column
我有一个
类型的数组
$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');
如何将两列数组连接成一列?
您可以使用 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
)
您当前的代码不起作用的原因是您要求 PHP 在 $records
数组中查找不存在的键 first_namelast_name
。
array_column
仅 returns 一个列,如 PHP manual entry
中所述
(PHP 5 >= 5.5.0, PHP 7)
array_column — Return the values from a single column in the input
您需要遍历数组并手动连接字符串。您可以使用的一个函数是 array_reduce
:
$names = array_reduce($records, function ($result, $item) {
$result[$item['id']] = $item['first_name'] . ' ' . $item['last_name'];
return $result;
});
您可以通过创建另一个数组来实现它。使用 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
)
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 );
我猜没有 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);
谢谢
我有一个
类型的数组$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');
如何将两列数组连接成一列?
您可以使用 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
)
您当前的代码不起作用的原因是您要求 PHP 在 $records
数组中查找不存在的键 first_namelast_name
。
array_column
仅 returns 一个列,如 PHP manual entry
(PHP 5 >= 5.5.0, PHP 7)
array_column — Return the values from a single column in the input
您需要遍历数组并手动连接字符串。您可以使用的一个函数是 array_reduce
:
$names = array_reduce($records, function ($result, $item) {
$result[$item['id']] = $item['first_name'] . ' ' . $item['last_name'];
return $result;
});
您可以通过创建另一个数组来实现它。使用 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
)
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 );
我猜没有 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);
谢谢