2012-04-26 14 views
26

Ho un array di array in questo modo:Come estrarre chiavi e valori di array specifici in un altro array?

array(array(), array(), array(), array()); 

array all'interno della matrice principale contengono 4 tasti ei loro valori. Le chiavi sono gli stessi tra tutti gli array come questo:

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

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

quindi voglio creare un altro array e estrarre i valori id e type e metterli in un nuovo array come questo:

array('post_1' => 'type1', 'post_2' => 'type2'); // and so on 

Il le chiavi di questo array corrisponderanno al valore dei vecchi array di chiavi id e il loro valore sarà il valore della chiave type.

Quindi è possibile raggiungere questo obiettivo? Ho provato a cercare php.net Array Functions ma non so quale funzione usare?

E grazie in anticipo.

risposta

25

Basta usare un buon ol' loop:

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

ho upvoted la domanda e la risposta. Come posso downvotare PHP per non fornire un metodo migliore? –

+1

@ Olivier'Ölbaum'Scherler Buone notizie: php ha fornito una funzione per questo - vedi la risposta più alta. – mickmackusa

67

PHP ha recentemente aggiunto una nuova funzione per le loro funzioni di matrice che fa esattamente quello che volevi. Rispondo a questo nella speranza che possa aiutare qualcuno in futuro con questa domanda.

La funzione che esegue questa operazione è array_column. per ottenere ciò che si voleva si può scrivere:

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

Si prega di notare che è stato introdotto solo nel PHP 5.5.0 versione, in modo da utilizzarlo su versioni più bassi di PHP sia per uso accettato risposta o dare un'occhiata a come questa funzione è stata implementata in PHP e usa questa libreria: https://github.com/ramsey/array_column

+1

Inoltre, puoi racchiuderlo in array_unique per filtrare i valori dupliate :) http://php.net/manual/en/function.array-unique.php –

-2

supponiamo di avere una matrice $ oldArray da cui vogliamo estrarre e seconda matrice $ array è quello in cui ci sarà STO squillare i valori estratti che inizialmente sono vuoti.

$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']; 
} 

Ora $ array hanno chiave/valore coppia come di seguito

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

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