Comment trouver une valeur dans array et la supprimer en utilisant les fonctions PHP array
Comment trouver une valeur dans un tableau et comment l'enlever. Si n'importe quelles fonctions php builtin array pour faire ceci. Après le retrait j'ai besoin de l'indice séquentiel de commande. tout corps sait s'il vous plaît aider moi.
9 réponses
pour rechercher un élément dans un tableau, vous pouvez utiliser la fonction array_search
et pour supprimer un élément d'un tableau vous pouvez utiliser la fonction unset
. Ex:
<?php
$hackers = array ('Alan Kay', 'Peter Norvig', 'Linus Trovalds', 'Larry Page');
print_r($hackers);
// Search
$pos = array_search('Linus Trovalds', $hackers);
echo 'Linus Trovalds found at: ' . $pos;
// Remove from array
unset($hackers[$pos]);
print_r($hackers);
?>
vous pouvez vous référer à: http://www.php.net/manual/en/ref.array.php pour plus de fonctions liées aux tableaux.
<?php
$my_array = array('sheldon', 'leonard', 'howard', 'penny');
$to_remove = array('howard');
$result = array_diff($my_array, $to_remove);
?>
vous devez trouver la clé du tableau en premier, cela peut être fait en utilisant array_search ()
une fois fait, utilisez le unset ()
<?php
$array = array( 'apple', 'orange', 'pear' );
unset( $array[array_search( 'orange', $array )] );
?>
juste au cas où vous voulez utiliser l'un des codes mentionnés, soyez conscient que array_search
retourne FALSE quand l '" aiguille "n'est pas trouvé dans" haystack " et donc ces échantillons seraient désactiver le premier élément (zéro indexé). Utilisez ceci à la place:
<?php
$haystack = Array('one', 'two', 'three');
if (($key = array_search('four', $haystack)) !== FALSE) {
unset($haystack[$key]);
}
var_dump($haystack);
l'exemple ci-dessus affichera:
Array
(
[0] => one
[1] => two
[2] => three
)
et c'est bien!
cette solution est la combinaison de la solution de @Peter pour supprimer les occurences multiples et de la solution de @chyno pour supprimer la première occurence. C'est ce que je suis en utilisant.
/**
* @param array $haystack
* @param mixed $value
* @param bool $only_first
* @return array
*/
function array_remove_values(array $haystack, $needle = null, $only_first = false)
{
if (!is_bool($only_first)) { throw new Exception("The parameter 'only_first' must have type boolean."); }
if (empty($haystack)) { return $haystack; }
if ($only_first) { // remove the first found value
if (($pos = array_search($needle, $haystack)) !== false) {
unset($haystack[$pos]);
}
} else { // remove all occurences of 'needle'
$haystack = array_diff($haystack, array($needle));
}
return $haystack;
}
aussi avoir un regard ici: PHP tableau supprimer par valeur (Pas clé)
tout D'abord, comme d'autres l'ont mentionné, vous utiliserez le " array_search() "& le " unset() "methodsas montré ci-dessous: -
<?php
$arrayDummy = array( 'aaaa', 'bbbb', 'cccc', 'dddd', 'eeee', 'ffff', 'gggg' );
unset( $arrayDummy[array_search( 'dddd', $arrayDummy )] ); // Index 3 is getting unset here.
print_r( $arrayDummy ); // This will show the indexes as 0, 1, 2, 4, 5, 6.
?>
maintenant pour ré-indexer le même tableau, sans trier aucune des valeurs du tableau, vous devrez utiliser la méthode" array_values () "comme montré ci-dessous: -
<?php
$arrayDummy = array_values( $arrayDummy );
print_r( $arrayDummy ); // Now, you will see the indexes as 0, 1, 2, 3, 4, 5.
?>
J'espère que ça aidera.
une fonction qui n'a pas été mentionnée est array_filter
. Vous avez juste à passer une fonction de rappel qui prend chaque élément comme argument et renvoie true ou false si cet élément doit rester OU être supprimé. Ceci a aussi l'avantage de supprimer les valeurs dupliquées.
Vous pouvez l'utiliser comme ceci:
$myArray = array('one', 'two', 'deleteme', 'three');
$output = array_filter($myArray, function($val) { return $val != 'deleteme'; });
et si vous voulez ré-indexer le tableau, vous pouvez passer le résultat à array_values
comme suit:
$output = array_values($output);
C'est comment j'allais le faire:
$terms = array('BMW', 'Audi', 'Porsche', 'Honda');
// -- purge 'make' Porsche from terms --
if (!empty($terms)) {
$pos = '';
$pos = array_search('Porsche', $terms);
if ($pos !== false) unset($terms[$pos]);
}
Pour trouver et supprimer plusieurs instance de valeur dans un tableau, j'ai utilisé le code ci-dessous
$list = array(1,3,4,1,3,1,5,8);
$new_arr=array();
foreach($list as $value){
if($value=='1')
{
continue;
}
else
{
$new_arr[]=$value;
}
}
print_r($new_arr);