2010-09-25 6 views
3

Si I une valeur ID est égale à 1 et rechercher un tableau que j'aime supprimer du tableau lui-même où ID est 1 si trouvé.Rechercher et supprimer du tableau multidimensionnel

Array (
[0] => Array 
    (
     [id] => 1 
    ) 
[1] => Array 
    (
     [id] => 4 
    ) 
[2] => Array 
    (
     [id] => 5 
    ) 
[3] => Array 
    (
     [id] => 7 
    ) 
) 

nouveau tableau

Array (
[0] => Array 
    (
     [id] => 4 
    ) 
[1] => Array 
    (
     [id] => 5 
    ) 
[2] => Array 
    (
     [id] => 7 
    ) 
) 

J'utilise search_array, et je suppose que parce qu'il est multidimensionnel, il n'est pas la trouver. Existe-t-il un moyen de rechercher un tableau comme ci-dessus?

Répondre

7

Si vous ne vérifiez qu'une seule valeur, pourquoi ne pas simplement utiliser une boucle foreach?

foreach ($arr as $key => $value) 
    { 
    if ($value['id'] == '1') 
     { 
     unset($arr[$key]); 
     } 
    } 
+1

Si j'ai changé le for pour un foreach, bingo qui a fonctionné. J'ai essayé moi-même et ne faisais pas la déclaration if correctement; ce qui m'a conduit à poster une question ici. Merci d'avoir répondu! – Tim

2
$arr = array(/* your array */); 
$remove = 1; 

foreach($arr as $key=>$val){ 
    if($val['id'] == $remove){ 
     unset($arr[$key]); 
    } 
} 
3

Une autre approche serait comme (vous considère qu'il va filtrer ids de nombre entier 1):

$filtered = array_filter($arr, function ($val) { return $val['id'] !== 1; }); 

Notez le ci-dessus utilise la fonction array_filter sournoisement nommée avec une fonction anonyme comme le rappel (qui fait le filtrage, vous pouvez utiliser une fonction nommée 'normale' si vous préférez, ou si vous n'embrassez pas encore PHP 5.3).

+0

Comment puis-je appliquer cette approche à un tableau en trois dimensions? – Ben