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

Pie*_*rre 35 php arrays

我有一个像这样的数组:

array( array(), array(), array(), array() );
Run Code Online (Sandbox Code Playgroud)

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

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

array( 'id' => 'post_2',
       'desc' => 'Description 2',
       'type' => 'type2',
       'title' => 'Title'
     );
Run Code Online (Sandbox Code Playgroud)

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

array( 'post_1' => 'type1', 'post_2' => 'type2'); // and so on
Run Code Online (Sandbox Code Playgroud)

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

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

eno*_*yhs 91

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

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

array_column($oldArray, 'type', 'id');
Run Code Online (Sandbox Code Playgroud)

请注意,它仅在PHP 5.5.0版本中引入,因此要在较低版本的PHP上使用它,要么使用已接受的答案,要么查看如何在PHP中实现此函数并使用此库:https:// github. COM /拉姆西/ array_column

  • 此外,您可以将其包装在 array_unique 中以过滤掉重复值:) http://php.net/manual/en/function.array-unique.php (3认同)

dec*_*eze 32

只需使用一个好的循环:

$newArray = array();
foreach ($oldArray as $entry) {
    $newArray[$entry['id']] = $entry['type'];
}
Run Code Online (Sandbox Code Playgroud)

  • 我赞成了问题和答案.如果不提供更好的方法,我怎么能下载PHP呢? (12认同)
  • @Olivier'Ölbaum'Scherler好消息:php为此提供了一个功能-请参见较高的答案。 (2认同)