Suche…


Anwenden einer Funktion auf jedes Element eines Arrays

Um eine Funktion auf jedes Element in einem Array array_map() , verwenden Sie array_map() . Dadurch wird ein neues Array zurückgegeben.

$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 jetzt ein array(2,3,4,5,6); .

Anstelle einer anonymen Funktion können Sie auch eine benannte Funktion verwenden. Das Obige könnte wie folgt geschrieben werden:

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

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

Wenn die benannte Funktion eine Klassenmethode ist, muss der Aufruf der Funktion einen Verweis auf ein Klassenobjekt enthalten, zu dem die Methode gehört:

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);
    }
}

Eine andere Möglichkeit, eine Funktion auf jedes Element in einem Array array_walk() ist array_walk() und array_walk_recursive() . Der an diese Funktionen übergebene Callback nimmt sowohl den Schlüssel / Index als auch den Wert jedes Arrayelements an. Diese Funktionen geben kein neues Array zurück, sondern ein Boolean für den Erfolg. So drucken Sie beispielsweise jedes Element in einem einfachen Array:

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

Der value-Parameter des Callbacks kann als Referenz übergeben werden, sodass Sie den Wert direkt im ursprünglichen Array ändern können:

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

$array jetzt array(2,3,4,5,6);

Bei verschachtelten Arrays geht array_walk_recursive() tiefer in jedes array_walk_recursive() :

$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"

Hinweis : Mit array_walk und array_walk_recursive Sie den Wert von Array-Elementen ändern, nicht jedoch die Schlüssel. Das Übergeben der Schlüssel als Referenz an den Rückruf ist gültig, hat jedoch keine Auswirkungen.

Array in Stücke aufteilen

array_chunk () teilt ein Array in Chunks auf

Nehmen wir an, wir haben ein eindimensionales Array verfolgt,

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

Jetzt mit array_chunk () über dem PHP-Array,

$output_array = array_chunk($input_array, 2);

Mit dem obigen Code werden Blöcke aus zwei Array-Elementen und ein mehrdimensionales Array wie folgt erstellt.

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

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

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

)

Wenn nicht alle Elemente des Arrays gleichmäßig durch die Blockgröße geteilt werden, sind das letzte Element des Ausgabearrays die verbleibenden Elemente.


Wenn wir das zweite Argument als weniger als 1 übergeben, wird E_WARNING geworfen und das Ausgabearray wird NULL .

Parameter Einzelheiten
$ array (array) Eingabefeld, das zu bearbeitende Array
$ size (int) Größe jedes Blocks (Integer-Wert)
$ preserve_keys (boolean) (optional) Wenn Sie möchten, dass das Ausgabearray die Schlüssel beibehält, setzen Sie es auf TRUE, andernfalls auf FALSE .

Ein Array in einen String implodieren

implode() fasst alle Array-Werte zusammen, verliert jedoch alle wichtigen Informationen:

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

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

Implodierende Schlüssel können mit dem array_keys() von array_keys() :

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

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

Das Implodieren von Schlüsseln mit Werten ist komplexer, kann jedoch im funktionalen Stil erfolgen:

$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 reduziert das Array in einen einzigen Wert. Grundsätzlich array_reduce The array_reduce jedes Element mit dem Ergebnis der letzten Iteration und erzeugt einen neuen Wert für die nächste Iteration.

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

  • $ carry ist das Ergebnis der letzten Iterationsrunde.
  • $ item ist der Wert der aktuellen Position im Array.

Summe des Arrays

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

Ergebnis: 15

Die größte Zahl im Array

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

Ergebnis: 211

Ist alles mehr als 100

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

Ergebnis: true

Ist ein Artikel kleiner als 100

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

Ergebnis: true

Wie implodieren ($ array, $ piece)

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

Ergebnis: "hello-world-PHP-language"

Wenn Sie eine implodierte Methode erstellen, lautet der Quellcode:

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"], "-");

Ergebnis: "hello-world-PHP-language"

Arrays "destructuring" mit list ()

Verwenden Sie list () , um eine Liste von Variablenwerten schnell einem Array zuzuweisen. Siehe auch 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;

Mit PHP 7.1 (derzeit in der Beta-Version) können Sie die Kurzlistensyntax verwenden :

// 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;

Drücken Sie einen Wert in ein Array

Es gibt zwei Möglichkeiten, ein Element in ein Array zu verschieben: array_push und $array[] =


Das array_push wird wie folgt verwendet:

$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

Dieser Code wird gedruckt:

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

$array[] = wird wie folgt verwendet:

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

Dieser Code wird gedruckt:

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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow