2017-10-18 4 views
1

La sortie doit être "Ceci est un exemple de chaîne de test". il est correct pour le petit filtre de tableau avec la valeur d'index si la valeur de tableau de filtre est plus de 100 valeurs nous ne pouvons pas assigner le numéro d'index statique. Comment peut être boucle pour filtrer à mon tableau de base. je sais peut utiliser array_diff mais je viens d'apprendre comment fonctionne avec pour boucle.comment filtrer plusieurs valeurs de tableau avec pour boucle en PHP?

<?php 

$arr = array("This","is","testing","a","string",";","sample"); 
$filter = array(";","a"); 

    for($i=0; $i < count($arr); $i++){ 
     if($arr[$i] == $filter[0] || $arr[$i] == $filter[1]){ 
      continue; 
     } 
     echo "$arr[$i] "; 
    } 

?> 
+0

Vous cherchez in_array ($ arr [$ i], filtre $); – Tarun

Répondre

5

Vous pouvez filtrer plusieurs valeurs à partir d'un tableau à l'aide array_diff. Pour ce cas, vous n'avez pas besoin d'une boucle.

$filtered = array_diff($arr, $filter); 

En général, il y a une fonction, appelée array_filter pour filtrer les valeurs d'un tableau donné un prédicat.

$filtered = array_filter($arr, function ($item) use ($filter) { 
    return !in_array($item, $filter); 
}); 

Pour imprimer votre résultat, vous pouvez simplement utiliser join pour combiner l'ensemble du tableau avec une "colle".

echo join(' ', $filtered); 

Pour fixer votre exemple, vous pouvez également boucle sur votre filtre et utiliser continue 2, pour continuer la boucle extérieure. Mais c'est une très mauvaise pratique et conduit à un code illisible. Alors ne fais pas ça! Une meilleure solution serait un drapeau « trouvé » et un autre contrôle après la boucle intérieure, si le drapeau est mis ...

for($i=0; $i < count($arr); $i++){ 
    for ($j = 0; $j < count($filter); $j++) { 
     if ($arr[$i] == $filter[$j]) { 
      continue 2; 
     } 
    } 
    echo "$arr[$i] "; 
} 
+0

peut être possible avec pour boucle? Je veux juste savoir bro –

+1

@MinKoKo c'est possible, mais vous ne devriez vraiment pas le faire. Le code devient illisible. – Philipp

+0

Merci mon cher réponse <3 –

1

Utilisez in_array

foreach ($arr as $item) { 
    if (in_array($item, $filter) { 
     continue; 
    } 
    echo $item, ' '; 
} 
+0

Merci mon frère. Possible avec une boucle imbriquée? –