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.

40
demandé sur Kodos Johnson 2010-06-17 10:33:12

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.

76
répondu mohitsoni 2010-06-17 06:53:21
<?php
$my_array = array('sheldon', 'leonard', 'howard', 'penny');
$to_remove = array('howard');
$result = array_diff($my_array, $to_remove);
?>
69
répondu Peter 2013-09-10 21:50:46

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 )] );
?>
13
répondu Kerry Jones 2010-06-17 06:44:45

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!

7
répondu chyno 2012-07-05 20:51:55

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é)

4
répondu algorhythm 2017-05-23 10:31:23

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.

1
répondu Knowledge Craving 2010-07-08 07:06:41

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);
1
répondu Kodos Johnson 2017-01-06 19:11:15

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]);
}
0
répondu Mike Q 2017-03-12 06:20:29

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);
-1
répondu Brijesh Mishra 2014-04-07 06:24:41