PHP
Wykonanie na tablicy
Szukaj…
Zastosowanie funkcji do każdego elementu tablicy
Aby zastosować funkcję do każdego elementu w tablicy, użyj array_map()
. Zwróci to nową tablicę.
$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
teraz jest array(2,3,4,5,6);
.
Zamiast korzystać z funkcji anonimowej , możesz użyć funkcji o nazwie. Powyższe można zapisać w następujący sposób:
function addOne($item) {
return $item + 1;
}
$array = array(1, 2, 3, 4, 5);
$newArray = array_map('addOne', $array);
Jeśli nazwana funkcja jest metodą klasy, wywołanie funkcji musi zawierać odwołanie do obiektu klasy, do którego należy metoda:
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);
}
}
Innym sposobem zastosowania funkcji do każdego elementu w tablicy jest array_walk()
i array_walk_recursive()
. Oddzwonienie przekazane do tych funkcji przyjmuje zarówno klucz / indeks, jak i wartość każdego elementu tablicy. Funkcje te nie zwrócą nowej tablicy, zamiast boolean sukcesu. Na przykład, aby wydrukować każdy element w prostej tablicy:
$array = array(1, 2, 3, 4, 5);
array_walk($array, function($value, $key) {
echo $value . ' ';
});
// prints "1 2 3 4 5"
Parametr wartości wywołania zwrotnego można przekazać przez odwołanie, co pozwala zmienić wartość bezpośrednio w oryginalnej tablicy:
$array = array(1, 2, 3, 4, 5);
array_walk($array, function(&$value, $key) {
$value++;
});
$array
jest teraz array(2,3,4,5,6);
W przypadku zagnieżdżonych tablic array_walk_recursive()
przejdzie głębiej do każdej pod-tablicy:
$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"
Uwaga : array_walk
i array_walk_recursive
pozwalają zmienić wartość elementów tablicy, ale nie klucze. Przekazywanie kluczy przez odwołanie do wywołania zwrotnego jest prawidłowe, ale nie ma wpływu.
Podziel tablicę na części
array_chunk () dzieli tablicę na części
Powiedzmy, że śledzimy tablicę jednowymiarową,
$input_array = array('a', 'b', 'c', 'd', 'e');
Teraz używając array_chunk () na powyższej tablicy PHP,
$output_array = array_chunk($input_array, 2);
Powyższy kod utworzy fragmenty 2 elementów tablicy i utworzy tablicę wielowymiarową w następujący sposób.
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => c
[1] => d
)
[2] => Array
(
[0] => e
)
)
Jeśli wszystkie elementy tablicy nie zostaną równo podzielone przez wielkość porcji, ostatnim elementem tablicy wyjściowej pozostaną elementy.
Jeśli przekażemy drugi argument jako mniejszy niż 1, wówczas zgłoszenie E_WARNING zostanie wygenerowane, a tablica wyjściowa będzie miała wartość NULL .
Parametr | Detale |
---|---|
$ tablica (tablica) | Tablica wejściowa, tablica do pracy |
Rozmiar $ (int) | Rozmiar każdej porcji (wartość całkowita) |
$ preserve_keys (boolean) (opcjonalnie) | Jeśli chcesz, aby tablica wyjściowa zachowała klucze, ustaw ją na PRAWDA, w przeciwnym razie FAŁSZ . |
Wszczepianie tablicy w ciąg znaków
implode()
łączy wszystkie wartości tablic, ale traci wszystkie kluczowe informacje:
$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];
echo implode(" ", $arr); // AA BB CC
Klucze do implozji można wykonać za pomocą wywołania array_keys()
:
$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];
echo implode(" ", array_keys($arr)); // a b c
Klucze wszczepiania z wartościami są bardziej złożone, ale można to zrobić przy użyciu funkcjonalnego stylu:
$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
redukuje tablicę do jednej wartości. Zasadniczo, array_reduce
przejdzie przez każdy element z wynikiem z ostatniej iteracji i wygeneruje nową wartość do następnej iteracji.
Zastosowanie: array_reduce ($array, function($carry, $item){...}, $defaul_value_of_first_carry)
- $ carry jest wynikiem ostatniej rundy iteracji.
- $ item to wartość bieżącej pozycji w tablicy.
Suma tablicy
$result = array_reduce([1, 2, 3, 4, 5], function($carry, $item){
return $carry + $item;
});
wynik: 15
Największa liczba w tablicy
$result = array_reduce([10, 23, 211, 34, 25], function($carry, $item){
return $item > $carry ? $item : $carry;
});
wynik: 211
Czy wszystkie pozycje są większe niż 100
$result = array_reduce([101, 230, 210, 341, 251], function($carry, $item){
return $carry && $item > 100;
}, true); //default value must set true
wynik: true
Czy każdy przedmiot jest mniejszy niż 100
$result = array_reduce([101, 230, 21, 341, 251], function($carry, $item){
return $carry || $item < 100;
}, false);//default value must set false
wynik: true
Jak implode ($ tablica, $ kawałek)
$result = array_reduce(["hello", "world", "PHP", "language"], function($carry, $item){
return !$carry ? $item : $carry . "-" . $item ;
});
wynik: "hello-world-PHP-language"
jeśli wykonasz metodę implode, kod źródłowy będzie:
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"], "-");
wynik: "hello-world-PHP-language"
Tablice „Niszczące” za pomocą list ()
Użyj list (), aby szybko przypisać listę wartości zmiennych do tablicy. Zobacz także 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;
W PHP 7.1 (obecnie w wersji beta) będziesz mógł używać składni krótkiej listy :
// 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;
Wciśnij wartość na tablicy
Istnieją dwa sposoby wypychania elementu do tablicy: array_push
i $array[] =
Tablica_push jest używana w następujący sposób:
$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
Ten kod wydrukuje:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 5
[4] => 6
)
$array[] =
jest używana w następujący sposób:
$array = [1,2,3];
$array[] = 5;
$array[] = 6;
print_r($array);
Ten kod wydrukuje:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 5
[4] => 6
)