更改数组的内容以提高效率


Change the content of an array to be more efficient

在我的数组上执行print_r时,我得到以下输出;

Array
(
    [0] => Array
        (
            [id] => 178
            [name] => Briar Price
        )
    [1] => Array
        (
            [id] => 90
            [name] => Bradley Kramer
        )
    [2] => Array
        (
            [id] => 508
            [name] => Calvin Yang
        )
    [3] => Array
        (
            [id] => 457
            [name] => Charles Valenzuela
        )
    ... and so on

我怎样才能将数组修改为如下所示;

Array
(
    [178] => Briar Price
    [90] => Bradley Kramer
    [508] => Calvin Yang
    [457] => Charles Valenzuela
    ... and so on
)

我只想使 ID 成为值名称的键。在数组重新排序方面,我总是遇到问题。

将第三个参数传递给array_column,使其键为

$array = array_column($users, 'name', 'id');
print_r($array);

use foreach() -

$newArr = array();
foreach ($your_array as $key => $val) {
  $newArr[$val['id']] = $val['name'];
}
print_r($newArr) // desired output

我会使用array_combine将新键附加到值

$results = [
    ['id'=>1,'name'=>'John'],['id'=>2,'name'=>'Jane'],
];
$results = array_combine(
    array_column($results,'id'), //use 'id' column as keys
    array_column($results,'name') //use 'name' column as values
);
//now $results is [1=>'John', 2=>'Jane']
您可以使用

array_column和array_combine PHP函数来执行此操作,而无需应用自定义逻辑。

这是你如何做到的,

<?php
    $keys=array_column($mainarray,'id');
    $values=array_column($mainarray,'name');
    $finalarray=array_combine($keys,$values);

$finalarray将是您想要的结果。

array_combine通过使用一个数组作为键,另一个数组作为其值来创建数组。

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