2016-05-11 1 views
0

J'ai une question. Supposons que j'ai un tableau comme celui-ci:Obtenir un tableau multidimensionnel par une valeur

Array 
(
    [0] => Array 
     (
      [id] => 4 
      [name] => test 
      [surname] => test1 
     ) 
    [1] => Array 
     (
      [id] => 6 
      [name] => test4 
      [surname] => test5 
     ) 
) 

J'ai besoin d'obtenir toutes les données pour tableau en id. Ainsi, par exemple si je veux obtenir des données pour id=4 je dois obtenir un tableau comme celui-ci:

Array 
(
    [id] => 4 
    [name] => test 
    [surname] => test1 
) 

J'ai essayé avec array_column mais fonctionnent pas. S'il vous plaît aidez-moi

+6

* J'ai essayé avec array_column * Montrer que le code. Vous êtes probablement plus proche de la solution que vous ne le pensez. – Rizier123

+0

Droit, Vous êtes proche de votre destination. –

+0

@HareaCosticla, Votre réponse est prête à [Answer] (http://stackoverflow.com/questions/37156500/get-an-array-from-multidimensional-by-a-value/37156674#37156620) –

Répondre

0

Avec l'aide de array_combine() & array_column()

$array = array 
(
    '0' => array 
     (
      'id' => 4, 
      'name' => 'test', 
      'surname' => 'test1', 
     ), 
    '1' => array 
     (
      'id' => 6, 
      'name' => 'test4', 
      'surname' => 'test5', 
     ) 
);  
// Create array as id as index 
$temp = array_combine(array_column($array, 'id'), $array); 
// get the sub array 
$new = $temp[4]; 
var_dump($new); 

Une autre façon simple serait -

$new = array(); 

foreach($array as &$v) { 
    if($v['id'] == 4) { 
     $new = $v; 
     break; 
    } 
} 

var_dump($new); 

Sortie

array(3) { 
    ["id"]=> 
    int(4) 
    ["name"]=> 
    string(4) "test" 
    ["surname"]=> 
    string(5) "test1" 
} 
+0

pourquoi avec la référence? Et une pause serait bien. – KiwiJuicer

+0

@KiwiJuicer Merci pour «casser» !! :) –

+0

@Sougata, Que puis-je dire à votre sujet? Vous faites une réponse et ensuite marquez ceci comme doublon !!! –

0

Vous avez besoin d'avoir une boucle et vérifiant si l'identifiant du sous-tableau est votre recherche id ou non, si c'est alors stocker puis sous-tableau et casser.

$arr = array(
      array('id' => 4, 'name' => 'test', 'surname' => 'test1'), 
      array('id' => 6, 'name' => 'test4', 'surname' => 'test5') 
     ); 

$id = 4; 
$out = array(); 
foreach($arr as $val){ 
    if($val['id'] == $id){ 
     $out = $val; 
     break; 
    } 

} 
echo '<pre>'; 
print_r($out); 

Check this out: Online check