Tôi sử dụng Array_Map để xác thực từng phần tử mảng. Nếu nó không vượt qua xác thực, nó sẽ được xóa khỏi mảng ban đầu:
$array = [123, 456];
$array = array_map[function [$e]{
if[ !is_numeric[$e] ]{
unset[$e];
return; //this way i get a NULL element
}
$return $e;
}, $array];
Đầu ra: mảng [3] {[0] => int [523] [1] => int [555] [2] => null}
Tất nhiên, tôi có thể thêm vào cuối một cái gì đó như:
$array = array_filter[$array, 'strlen'];
Nhưng không có cách nào để làm điều này trong Array_Map?
CẬP NHẬT
Về chủ đề này, tôi quên đề cập đến một trường hợp. Điều gì sẽ xảy ra nếu tôi muốn tháo toàn bộ mảng nếu một phần tử không vượt qua xác thực? Điều này có thể được thực hiện với Array_Filter, Array_Map hoặc bất cứ điều gì khác? Tôi không muốn lặp qua mảng với một và vân vân.
[Php 4> = 4.0.6, Php 5, Php 7, Php 8]
Array_Map - Áp dụng cuộc gọi lại cho các phần tử của các mảng đã cho — Applies the callback to the elements of the given arrays
Sự mô tả
Array_Map [? Callable $callback
, Array
0, Array $array = array_filter[$array, 'strlen'];
1]: Array[?callable $array = array_filter[$array, 'strlen'];
$callback
,
array
0, array $array = array_filter[$array, 'strlen'];
1]: array$array = array_filter[$array, 'strlen'];
Thông số
$array = array_filter[$array, 'strlen'];
2Một cuộc gọi để chạy cho mỗi phần tử trong mỗi mảng.callable to run for each element in each array.
3 có thể được truyền dưới dạng giá trị cho $array = array_filter[$array, 'strlen'];
2 để thực hiện thao tác zip trên nhiều mảng. Nếu chỉ $array = array_filter[$array, 'strlen'];
5 được cung cấp, Array_Map [] sẽ trả về mảng đầu vào. can be passed as a value to $array = array_filter[$array, 'strlen'];
$array = array_filter[$array, 'strlen'];
2 to perform a zip operation on multiple arrays. If only $array = array_filter[$array, 'strlen'];
5 is
provided, array_map[] will return the input array. $array = array_filter[$array, 'strlen'];
5Một mảng để chạy qua hàm
$array = array_filter[$array, 'strlen'];
2. $array = array_filter[$array, 'strlen'];
8Danh sách biến bổ sung của các đối số mảng để chạy qua hàm
$array = array_filter[$array, 'strlen'];
2.Trả về giá trị
Trả về một mảng chứa kết quả áp dụng hàm
$array = array_filter[$array, 'strlen'];
2 cho giá trị tương ứng của $array = array_filter[$array, 'strlen'];
5 [và $array = array_filter[$array, 'strlen'];
8 nếu có nhiều mảng được cung cấp] được sử dụng làm đối số cho cuộc gọi lại.Mảng được trả về sẽ bảo tồn các khóa của đối số mảng khi và chỉ khi chính xác một mảng được truyền. Nếu có nhiều hơn một mảng được thông qua, mảng được trả về sẽ có các khóa số nguyên tuần tự.
Thay đổi
8.0.0 | Array_Map [? Callable $callback , Array 0, Array 1]: ArrayArray [ [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 ]4. |
Thông số
2array_map[] example$array = array_filter[$array, 'strlen'];
Array [ [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 ]5
Một cuộc gọi để chạy cho mỗi phần tử trong mỗi mảng.
Array [ [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 ]
3 có thể được truyền dưới dạng giá trị cho $array = array_filter[$array, 'strlen'];
2 để thực hiện thao tác zip trên nhiều mảng. Nếu chỉ $array = array_filter[$array, 'strlen'];
5 được cung cấp, Array_Map [] sẽ trả về mảng đầu vào.array_map[] using a lambda function$array = array_filter[$array, 'strlen'];
Array [ [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 ]6
Array [ [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ]
5array_map[] - using more arrays$array = array_filter[$array, 'strlen'];
Array [ [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 ]7
Array [ [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 ]8
Array [ [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 ]9
Một mảng để chạy qua hàm
$array = array_filter[$array, 'strlen'];
2.// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]
$array = array_filter[$array, 'strlen'];
8Danh sách biến bổ sung của các đối số mảng để chạy qua hàm
$array = array_filter[$array, 'strlen'];
2.$array = array_filter[$array, 'strlen'];
3 as the name of the callback function Trả về giá trị
Array [ [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ]1
Một mảng để chạy qua hàm
$array = array_filter[$array, 'strlen'];
2.Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]
8$array = array_filter[$array, 'strlen'];
3 $array = array_filter[$array, 'strlen'];
2 with only $array = array_filter[$array, 'strlen'];
5$array = array_filter[$array, 'strlen'];
Array [ [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ]5
Một mảng để chạy qua hàm
$array = array_filter[$array, 'strlen'];
2.
$array = array_filter[$array, 'strlen'];
8 Danh sách biến bổ sung của các đối số mảng để chạy qua hàm
2.array_map[] - with string keys$array = array_filter[$array, 'strlen'];
Array [ [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ]6
Một mảng để chạy qua hàm
$array = array_filter[$array, 'strlen'];
2.array[1] { ["stringkey"]=> array[1] { [0]=> string[5] "value" } } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } } array[1] { ["stringkey"]=> string[5] "value" } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } }
8array_map[] - associative arrays$array = array_filter[$array, 'strlen'];
Danh sách biến bổ sung của các đối số mảng để chạy qua hàm
$array = array_filter[$array, 'strlen'];
2.array_map[] does not directly support using the array key as an input, that may be simulated using
array_keys[]. Array [ [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ]7
Một mảng để chạy qua hàm
$array = array_filter[$array, 'strlen'];
2.array[3] { [0]=> string[24] "v1 was the First release" [1]=> string[25] "v2 was the Second release" [2]=> string[24] "v3 was the Third release" }
$array = array_filter[$array, 'strlen'];
8
$array = array_filter[$array, 'strlen'];
- Danh sách biến bổ sung của các đối số mảng để chạy qua hàm
2.$array = array_filter[$array, 'strlen'];
- Trả về giá trị
- Trả về một mảng chứa kết quả áp dụng hàm
2 cho giá trị tương ứng của$array = array_filter[$array, 'strlen'];
5 [và$array = array_filter[$array, 'strlen'];
8 nếu có nhiều mảng được cung cấp] được sử dụng làm đối số cho cuộc gọi lại.$array = array_filter[$array, 'strlen'];
Mảng được trả về sẽ bảo tồn các khóa của đối số mảng khi và chỉ khi chính xác một mảng được truyền. Nếu có nhiều hơn một mảng được thông qua, mảng được trả về sẽ có các khóa số nguyên tuần tự. ¶
Thay đổi
Array [ [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ]8
Array [ [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ]9
// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]0
// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]1
Phiên bản ¶
Thay đổi
// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]2
// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]3
// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]4
Phiên bản ¶
Nếu
2 mong đợi một tham số được truyền qua tham chiếu, hàm này bây giờ sẽ phát ra một $array = array_filter[$array, 'strlen'];
Array
[
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
]
4.
// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]5
// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]6
// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]7
// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]8
// printout of $c Array [ [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ] // printout of $d Array [ [0] => Array [ [1] => uno ] [1] => Array [ [2] => dos ] [2] => Array [ [3] => tres ] [3] => Array [ [4] => cuatro ] [4] => Array [ [5] => cinco ] ]9
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]0
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]1
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]2
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]3
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]4
Ví dụ ¶
Ví dụ #1 Array_map [] ví dụ
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]5
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]6
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]7
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]8
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]4
Điều này làm cho $ b có: ¶
Ví dụ #2 mảng_map [] sử dụng hàm lambda
array[3] { [0]=> int[1] [1]=> int[2] [2]=> int[3] }0
array[3] { [0]=> int[1] [1]=> int[2] [2]=> int[3] }1
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]4
Ví dụ #3 mảng_map [] - Sử dụng nhiều mảng hơn ¶
Ví dụ trên sẽ xuất ra:
array[3] { [0]=> int[1] [1]=> int[2] [2]=> int[3] }3
array[3] { [0]=> int[1] [1]=> int[2] [2]=> int[3] }4
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]4
Thông thường khi sử dụng hai hoặc nhiều mảng, chúng phải có độ dài bằng nhau vì hàm gọi lại được áp dụng song song với các phần tử tương ứng. Nếu các mảng có chiều dài không đồng đều, các mảng ngắn hơn sẽ được mở rộng với các phần tử trống để phù hợp với chiều dài của dài nhất. ¶
Một cách sử dụng thú vị của chức năng này là xây dựng một mảng mảng, có thể dễ dàng thực hiện bằng cách sử dụng
3 làm tên của hàm gọi lại$array = array_filter[$array, 'strlen'];
array[3] { [0]=> int[1] [1]=> int[2] [2]=> int[3] }6
array[3] { [0]=> int[1] [1]=> int[2] [2]=> int[3] }7
array[3] { [0]=> int[1] [1]=> int[2] [2]=> int[3] }8
array[3] { [0]=> int[1] [1]=> int[2] [2]=> int[3] }9
array[1] { ["stringkey"]=> array[1] { [0]=> string[5] "value" } } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } } array[1] { ["stringkey"]=> string[5] "value" } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } }0
array[1] { ["stringkey"]=> array[1] { [0]=> string[5] "value" } } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } } array[1] { ["stringkey"]=> string[5] "value" } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } }1
array[1] { ["stringkey"]=> array[1] { [0]=> string[5] "value" } } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } } array[1] { ["stringkey"]=> string[5] "value" } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } }2
array[1] { ["stringkey"]=> array[1] { [0]=> string[5] "value" } } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } } array[1] { ["stringkey"]=> string[5] "value" } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } }3
array[1] { ["stringkey"]=> array[1] { [0]=> string[5] "value" } } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } } array[1] { ["stringkey"]=> string[5] "value" } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } }4
array[1] { ["stringkey"]=> array[1] { [0]=> string[5] "value" } } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } } array[1] { ["stringkey"]=> string[5] "value" } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } }5
array[1] { ["stringkey"]=> array[1] { [0]=> string[5] "value" } } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } } array[1] { ["stringkey"]=> string[5] "value" } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } }6
array[1] { ["stringkey"]=> array[1] { [0]=> string[5] "value" } } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } } array[1] { ["stringkey"]=> string[5] "value" } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } }7
array[1] { ["stringkey"]=> array[1] { [0]=> string[5] "value" } } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } } array[1] { ["stringkey"]=> string[5] "value" } array[1] { [0]=> array[2] { [0]=> string[5] "value" [1]=> string[5] "value" } }8
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]4
Ví dụ #4 thực hiện thao tác zip của mảng ¶
Ví dụ #5
3 $array = array_filter[$array, 'strlen'];
2 chỉ với $array = array_filter[$array, 'strlen'];
5$array = array_filter[$array, 'strlen'];
array[3] { [0]=> string[24] "v1 was the First release" [1]=> string[25] "v2 was the Second release" [2]=> string[24] "v3 was the Third release" }0
array[3] { [0]=> string[24] "v1 was the First release" [1]=> string[25] "v2 was the Second release" [2]=> string[24] "v3 was the Third release" }1
Array [ [0] => Array [ [0] => 1 [1] => one [2] => uno ] [1] => Array [ [0] => 2 [1] => two [2] => dos ] [2] => Array [ [0] => 3 [1] => three [2] => tres ] [3] => Array [ [0] => 4 [1] => four [2] => cuatro ] [4] => Array [ [0] => 5 [1] => five [2] => cinco ] ]4