2017-08-18 22 views
-1

私はアイテムの配列を持っています、それはアイテムの別の配列を含む1つのキー "場所"です。PHPの配列マージでの単一キー

親配列をループすることなく、このキーをマージする方法はありますか?私はwordpressとPHPで働いています。

例アレイ

Array 
(
    [0] => Array 
     (
      [title] => Test Property 1 
      [locations] => Array 
       (
        [0] => WP_Term Object 
         (
          [term_id] => 334 
          [name] => Los Angeles 
          [slug] => los-angeles 
         ) 

       ) 

     ) 

    [1] => Array 
     (
      [title] => Test Property 2 
      [locations] => Array 
       (
        [0] => WP_Term Object 
         (
          [term_id] => 335 
          [name] => New York 
          [slug] => new-york 
         ) 

       ) 

     ) 

    [2] => Array 
     (
      [title] => Test Property 3 
      [locations] => Array 
       (
        [0] => WP_Term Object 
         (
          [term_id] => 336 
          [name] => Baltimore 
          [slug] => baltimore 
         ) 

       ) 

     ) 

) 

私は唯一の '場所' キーをマージしたいので、私は別々の配列が残っています:

Array 
(
    [0] => Array 
     (
      [term_id] => 334 
     ) 

    [1] => Array 
     (
      [term_id] => 335 
     ) 

    [2] => Array 
     (
      [term_id] => 336 
     ) 

) 
+2

なぜあなたはループを恐れていますか?この__always__は、明示的にまたは暗黙的にループで行われます。 –

+0

これは大きなメモリヒットだろう...これはWordPressのサイトです...すでにmem heavy;) – Kevin

+1

テストするまで - あなたは言うことができません。 –

答えて

1

明示的なループ:

$source_array = [/* Your array here */]; 
$new_array = []; 
foreach ($source_array as $item) { 
    $new_array[] = ['term_id' => $item['locations'][0]->term_id]; 
} 

暗黙のループ、解決の1つ:

$source_array = [/* Your array here */]; 
$new_array = array_reduce(
    $source_array, 
    function($t, $v) { $t[] = ['term_id' => $v['locations'][0]->term_id]; return $t; }, 
    [] 
); 
関連する問題