2017-08-18 7 views
-1

J'ai un tableau d'éléments, dans lequel il y a 1 clé "emplacements" qui contiendra un autre tableau d'éléments.Clé unique dans la fusion de tableaux en PHP

Existe-t-il un moyen de fusionner cette clé, sans avoir à boucler le tableau parent? Je travaille avec wordpress et PHP.

Exemple Tableau

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 
         ) 

       ) 

     ) 

) 

Je veux fusionner que la touche 'endroits', donc je suis parti avec un séparé tableau:

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

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

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

) 
+2

Pourquoi avez-vous si peur des boucles? Ce __always__ sera fait avec une boucle, explicitement ou implicitement. –

+0

Ne serait-ce pas un plus grand succès de mémoire ... c'est un site de wordpress ... déjà lourd de mémoire;) – Kevin

+1

Jusqu'à ce que vous testiez - vous ne pouvez pas dire. –

Répondre

1

looping explicite:

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

Boucle implicite, l'une des solutions:

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