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

问题描述:

我有数组的数组像这样:如何提取特定的数组键和值到另一个数组?

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但我不知道使用哪个函数?

并提前致谢。

只需使用一个良好的醇”循环:

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

我upvoted的问题和答案。我怎样才能使PHP不能提供更好的方法? – 2013-06-18 09:14:18

+1

@Olivier'Ölbaum'Scherler好消息:php为此提供了一个功能 - 请参阅较高的upvoted答案。 – mickmackusa 2018-01-13 10:01:34

PHP最近添加了新的功能,以他们的阵列功能,做你想要什么。 我正在回答这个问题,希望这个问题可以帮助未来某个人。

这样做的功能是array_column。 为了得到你想要,你会写什么:

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

请注意,它是PHP只推出5.5.0版,所以把它用在低版本的PHP或者使用公认的答案,或者看看如何此功能在PHP中实现和使用这个库:https://github.com/ramsey/array_column

+1

此外,你可以包装在array_unique过滤出重复值:) http://php.net/manual/en/function.array-unique.php – 2014-10-10 22:03:41

让我们假设我们有一个数组$ oldArray从中我们要提取和第二阵列$阵列是在其中我们将申通快递响起最初空白的提取值。

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

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

$array = array(); //Blank array 

foreach(oldArray as $i => $oldarray){ 
    $array[$i][$oldarray['id']] = $oldarray['type']; 
} 

现在$阵列有键/值对如下

array(
    0 => array('post_1' => 'type1'), 

    1 => array('post_2' => 'post_2') 
);