2012-04-26 16 views
26

ようなので、私は、配列の配列を有する:特定の配列キーと値を別の配列に抽出する方法は?

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を検索しようとしましたが、どの機能を使うのか分かりません。

ありがとうございます。

答えて

25

ただ、古き良きループを使用します。

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

ように、キー/値のペアを持っている私は、質問と答えをupvoted。どのように私はより良い方法を提供しないためにPHPをdownvoteできますか? –

+1

@Olivier'Ölbaum'Scherler良いニュース:PHPはこれのための関数を提供しました - より高いupvoted答えを見てください。 – mickmackusa

67

PHPは最近、あなたが望んでいたまさに行い、その配列関数に新しい機能を追加しました。 私はこの質問に将来誰かを助けることを期待してこれに答えています。

これを行う機能は、array_columnです。

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

ので、PHPの下のバージョンのいずれかを使用受け入れ答えを、それを使用するか、どのように見てみることを、それが唯一のPHP 5.5.0のバージョンで導入されたことに注意してください:あなたが書くでしょう欲しかったものを手に入れる この関数はPHPで実装され、このライブラリを使用した:https://github.com/ramsey/array_column

+1

さらに、array_uniqueでその値をラップして複製値を除外することもできます:) http://php.net/manual/en/function.array-unique.php –

-2

は、我々は我々が抽出したいと二番目の配列$配列たちがなりたものであるから、アレイ$ 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') 
); 
関連する問題