如何将特定的数组键和值提取到另一个数组?

2022-08-30 11:35:35

我有一个数组,如下所示:

array( array(), array(), array(), array() );

主数组内的数组包含 4 个键及其值。所有数组中的键都是相同的,如下所示:

array( 'id' => 'post_1',
       'desc' => 'Description 1',
       'type' => 'type1',
       'title' => 'Title'
     );

array( 'id' => 'post_2',
       'desc' => 'Description 2',
       'type' => 'type2',
       'title' => 'Title'
     );

因此,我想创建另一个数组并提取和值,并将它们放入一个新数组中,如下所示:idtype

array( 'post_1' => 'type1', 'post_2' => 'type2'); // and so on

此数组中的键将是键旧数组的值,它们的值将是键的值。idtype

那么有可能实现这一目标吗?我尝试搜索数组函数 php.net,但我不知道该使用哪个函数?


答案 1

PHP 5.5 引入了一个数组函数,可以完全按照您的要求执行操作。我回答这个问题是希望它可以帮助将来有人解决这个问题。

执行此操作的函数array_column。为了得到你想要的东西,你会写:

array_column($oldArray, 'type', 'id');

要在较低版本的PHP上使用它,请使用接受的答案,或者看看这个函数是如何在PHP中实现的,并使用此库:https://github.com/ramsey/array_column


答案 2

只需使用一个好的 ol' 循环:

$newArray = array();
foreach ($oldArray as $entry) {
    $newArray[$entry['id']] = $entry['type'];
}