PHP
Uitvoering van een array
Zoeken…
Een functie toepassen op elk element van een array
Gebruik array_map()
om een functie toe te passen op elk item in een array. Hiermee wordt een nieuwe array geretourneerd.
$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
nu array(2,3,4,5,6);
.
In plaats van een anonieme functie te gebruiken , kunt u een benoemde functie gebruiken. Het bovenstaande kan worden geschreven als:
function addOne($item) {
return $item + 1;
}
$array = array(1, 2, 3, 4, 5);
$newArray = array_map('addOne', $array);
Als de genoemde functie een klassenmethode is, moet de aanroep van de functie een verwijzing naar een klasseobject bevatten waartoe de methode behoort:
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);
}
}
Een andere manier om een functie toe te passen op elk item in een array is array_walk()
en array_walk_recursive()
. De callback die in deze functies wordt doorgegeven, heeft zowel de sleutel / index als de waarde van elk arrayitem nodig. Deze functies retourneren geen nieuwe array, maar een boolean voor succes. Om bijvoorbeeld elk element in een eenvoudige array af te drukken:
$array = array(1, 2, 3, 4, 5);
array_walk($array, function($value, $key) {
echo $value . ' ';
});
// prints "1 2 3 4 5"
De waardeparameter van de callback kan worden doorgegeven als referentie, zodat u de waarde rechtstreeks in de oorspronkelijke array kunt wijzigen:
$array = array(1, 2, 3, 4, 5);
array_walk($array, function(&$value, $key) {
$value++;
});
$array
nu array(2,3,4,5,6);
Voor geneste arrays gaat array_walk_recursive()
dieper in elke subarray:
$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"
Opmerking : met array_walk
en array_walk_recursive
kunt u de waarde van array_walk_recursive
wijzigen, maar niet van de sleutels. Het doorgeven van de toetsen door verwijzing naar de callback is geldig maar heeft geen effect.
Array splitsen in brokken
array_chunk () splitst een array in brokken
Laten we zeggen dat we een eendimensionale reeks volgen,
$input_array = array('a', 'b', 'c', 'd', 'e');
Gebruik nu array_chunk () op bovenstaande PHP-array,
$output_array = array_chunk($input_array, 2);
Bovenstaande code maakt brokken van 2 array-elementen en maakt een multidimensionale array als volgt.
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => c
[1] => d
)
[2] => Array
(
[0] => e
)
)
Als alle elementen van de array niet gelijkmatig worden gedeeld door de brokgrootte, blijven het laatste element van de outputarray over.
Als we het tweede argument als minder dan 1 doorgeven, wordt E_WARNING gegenereerd en is de uitvoerarray NULL .
Parameter | Details |
---|---|
$ array (array) | Invoerarray, de array om aan te werken |
$ size (int) | Grootte van elk deel (geheel getal) |
$ preserve_keys (boolean) (optioneel) | Als u wilt dat de uitvoerarray de sleutels behoudt, stelt u deze in op TRUE anders FALSE . |
Een array in een reeks insluiten
implode()
combineert alle matrixwaarden maar verliest alle belangrijke informatie:
$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];
echo implode(" ", $arr); // AA BB CC
Imploderende sleutels kunnen worden gedaan met behulp van de aanroep array_keys()
:
$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];
echo implode(" ", array_keys($arr)); // a b c
Sleutelen van sleutels met waarden is complexer, maar kan worden gedaan met behulp van functionele stijl:
$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
vermindert array tot een enkele waarde. Kortom, de array_reduce
doorloopt elk item met het resultaat van de laatste iteratie en produceert een nieuwe waarde voor de volgende iteratie.
Gebruik: array_reduce ($array, function($carry, $item){...}, $defaul_value_of_first_carry)
- $ carry is het resultaat van de laatste iteratieronde.
- $ item is de waarde van de huidige positie in de array.
Som van array
$result = array_reduce([1, 2, 3, 4, 5], function($carry, $item){
return $carry + $item;
});
resultaat: 15
Het grootste aantal in de reeks
$result = array_reduce([10, 23, 211, 34, 25], function($carry, $item){
return $item > $carry ? $item : $carry;
});
resultaat: 211
Is alle item meer dan 100
$result = array_reduce([101, 230, 210, 341, 251], function($carry, $item){
return $carry && $item > 100;
}, true); //default value must set true
resultaat: true
Is een item minder dan 100
$result = array_reduce([101, 230, 21, 341, 251], function($carry, $item){
return $carry || $item < 100;
}, false);//default value must set false
resultaat: true
Zoals implode ($ array, $ piece)
$result = array_reduce(["hello", "world", "PHP", "language"], function($carry, $item){
return !$carry ? $item : $carry . "-" . $item ;
});
resultaat: "hello-world-PHP-language"
als u een implodeermethode maakt, is de broncode:
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"], "-");
resultaat: "hello-world-PHP-language"
"Destructuring" arrays met behulp van list ()
Gebruik list () om snel een lijst met variabele waarden toe te wijzen aan een array. Zie ook 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;
Met PHP 7.1 (momenteel in beta) kunt u de syntaxis van de korte lijst gebruiken :
// 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;
Push een waarde op een array
Er zijn twee manieren om een element naar een array te array_push
: array_push
en $array[] =
De array_push wordt als volgt gebruikt:
$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
Deze code wordt afgedrukt:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 5
[4] => 6
)
$array[] =
wordt als volgt gebruikt:
$array = [1,2,3];
$array[] = 5;
$array[] = 6;
print_r($array);
Deze code wordt afgedrukt:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 5
[4] => 6
)