Recherche…


Application d'une fonction à chaque élément d'un tableau

Pour appliquer une fonction à chaque élément d'un tableau, utilisez array_map() . Cela retournera un nouveau tableau.

$array = array(1,2,3,4,5);
//each array item is iterated over and gets stored in the function parameter.
$newArray = array_map(function($item) {
    return $item + 1;
}, $array);

$newArray est maintenant array(2,3,4,5,6); .

Au lieu d'utiliser une fonction anonyme , vous pouvez utiliser une fonction nommée. Ce qui précède pourrait être écrit comme:

function addOne($item) {
    return $item + 1;
}

$array = array(1, 2, 3, 4, 5);
$newArray = array_map('addOne', $array);

Si la fonction nommée est une méthode de classe, l'appel de la fonction doit inclure une référence à un objet de classe auquel la méthode appartient:

class Example {
    public function addOne($item) {
        return $item + 1;
    }

    public function doCalculation() {
        $array = array(1, 2, 3, 4, 5);
        $newArray = array_map(array($this, 'addOne'), $array);
    }
}

Un autre moyen d'appliquer une fonction à chaque élément d'un tableau est array_walk() et array_walk_recursive() . Le rappel transmis à ces fonctions prend à la fois la clé / l'index et la valeur de chaque élément du tableau. Ces fonctions ne renverront pas un nouveau tableau, mais un booléen pour le succès. Par exemple, pour imprimer chaque élément d'un tableau simple:

$array = array(1, 2, 3, 4, 5);
array_walk($array, function($value, $key) {
    echo $value . ' ';
});
// prints "1 2 3 4 5"

Le paramètre value du rappel peut être transmis par référence, ce qui vous permet de modifier la valeur directement dans le tableau d'origine:

$array = array(1, 2, 3, 4, 5);
array_walk($array, function(&$value, $key) {
    $value++;
});

$array maintenant est un array(2,3,4,5,6);

Pour les tableaux imbriqués, array_walk_recursive() ira plus loin dans chaque sous-tableau:

$array = array(1, array(2, 3, array(4, 5), 6);
array_walk_recursive($array, function($value, $key) {
    echo $value . ' ';
});
// prints "1 2 3 4 5 6"

Remarque : array_walk et array_walk_recursive vous permettent de modifier la valeur des éléments du tableau, mais pas les clés. Passer les clés par référence dans le rappel est valide mais n'a aucun effet.

Diviser le tableau en morceaux

array_chunk () divise un tableau en morceaux

Disons que nous avons suivi un tableau à une dimension,

$input_array = array('a', 'b', 'c', 'd', 'e');

Maintenant, utilisez array_chunk () sur le tableau PHP ci-dessus,

$output_array = array_chunk($input_array, 2);

Le code ci-dessus crée des morceaux de 2 éléments de tableau et crée un tableau multidimensionnel comme suit.

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)

Si tous les éléments du tableau ne sont pas divisés de manière égale par la taille du bloc, le dernier élément du tableau de sortie sera le reste des éléments.


Si nous passons le second argument à moins de 1 alors E_WARNING sera lancé et le tableau de sortie sera NULL .

Paramètre Détails
$ array (array) Tableau d'entrée, le tableau sur lequel travailler
$ size (int) Taille de chaque morceau (valeur entière)
$ preserve_keys (booléen) (facultatif) Si vous souhaitez que le tableau de sortie conserve les clés, définissez-le sur TRUE sinon FALSE .

Impliquer un tableau dans une chaîne

implode() combine toutes les valeurs du tableau mais perd toutes les informations clés:

$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];

echo implode(" ", $arr); // AA BB CC

Les clés d'implosion peuvent être faites en utilisant l' array_keys() à array_keys() :

$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];

echo implode(" ", array_keys($arr)); // a b c

L'implémentation de clés avec des valeurs est plus complexe mais peut être effectuée en utilisant un style fonctionnel:

$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];

echo implode(" ", array_map(function($key, $val) { 
    return "$key:$val"; // function that glues key to the value
}, array_keys($arr), $arr)); 

// Output: a:AA b:BB c:CC

array_reduce

array_reduce réduit le tableau en une seule valeur. Fondamentalement, le array_reduce parcourra chaque élément avec le résultat de la dernière itération et produira une nouvelle valeur à la prochaine itération.

Usage: array_reduce ($array, function($carry, $item){...}, $defaul_value_of_first_carry)

  • $ carry est le résultat du dernier tour d'itération.
  • $ item est la valeur de la position actuelle dans le tableau.

Somme de tableau

$result = array_reduce([1, 2, 3, 4, 5], function($carry, $item){
    return $carry + $item;
});

résultat: 15

Le plus grand nombre dans le tableau

$result = array_reduce([10, 23, 211, 34, 25], function($carry, $item){
        return $item > $carry ? $item : $carry;
});

résultat: 211

Est-ce que tous les articles sont plus de 100

$result = array_reduce([101, 230, 210, 341, 251], function($carry, $item){
        return $carry && $item > 100;
}, true); //default value must set true

résultat: true

Est-ce qu'un objet moins de 100

$result = array_reduce([101, 230, 21, 341, 251], function($carry, $item){
        return $carry || $item < 100;
}, false);//default value must set false

résultat: true

Comme implode ($ array, $ piece)

$result = array_reduce(["hello", "world", "PHP", "language"], function($carry, $item){
        return !$carry ? $item : $carry . "-" . $item ;
});

résultat: "hello-world-PHP-language"

si faire une méthode d'implode, le code source sera:

function implode_method($array, $piece){
    return array_reduce($array, function($carry, $item) use ($piece) {
            return !$carry ? $item : ($carry . $piece . $item);
    });
}

$result = implode_method(["hello", "world", "PHP", "language"], "-");

résultat: "hello-world-PHP-language"

Tableaux "Destructuration" à l'aide de list ()

Utilisez list () pour attribuer rapidement une liste de valeurs de variables dans un tableau. Voir aussi compact ()

// Assigns to $a, $b and $c the values of their respective array elements in           $array with keys numbered from zero
list($a, $b, $c) = $array;

Avec PHP 7.1 (actuellement en version bêta), vous pourrez utiliser la syntaxe de liste courte :

// Assigns to $a, $b and $c the values of their respective array elements in $array with keys numbered from zero
[$a, $b, $c] = $array;

// Assigns to $a, $b and $c the values of the array elements in $array with the keys "a", "b" and "c", respectively
["a" => $a, "b" => $b, "c" => $c] = $array;

Poussez une valeur sur un tableau

Il y a deux manières de pousser un élément dans un tableau: array_push et $array[] =


Le array_push est utilisé comme ceci:

$array = [1,2,3];
$newArraySize = array_push($array, 5, 6); // The method returns the new size of the array
print_r($array); // Array is passed by reference, therefore the original array is modified to contain the new elements

Ce code va imprimer:

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

$array[] = est utilisé comme ceci:

$array = [1,2,3];
$array[] = 5;
$array[] = 6;
print_r($array);

Ce code va imprimer:

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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow