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

时间:2012-04-26 07:12:34

标签: php arrays

我有一个像这样的数组:

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

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

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

3 个答案:

答案 0 :(得分:85)

PHP最近为他们的数组函数添加了新函数,它完全符合您的要求。 我正在回答这个问题,希望将来有人可以帮助这个问题。

执行此操作的功能是array_column。 为了得到你想要的东西你会写:

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

请注意,它仅在PHP 5.5.0版本中引入,因此要在较低版本的PHP上使用它,要么使用已接受的答案,要么查看如何在PHP中实现此函数并使用此库:{{3 }}

答案 1 :(得分:31)

只需使用好的循环:

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

答案 2 :(得分:-1)

假设我们有一个数组 $ oldArray ,我们要从中提取第二个数组 $ newArray 是我们将被存储的一个。

$oldArr = array(
    array( 'id' => 'post_1',
       'desc' => 'Description 1',
       'type' => 'type1',
       'title' => 'Title'
     ),
    array( 'id' => 'post_2',
           'desc' => 'Description 2',
           'type' => 'type2',
           'title' => 'Title'
    )
);

现在我们只需使用 array_column 方法,如下所示

$newArr = array_column($oldArr, 'type', 'id');

它将按键/值对提供输出

array
(
    [post_1] => type1
    [post_2] => type2
)