Hướng dẫn php array_filter with anonymous function - php array_filter với chức năng ẩn danh

Nếu muốn làm điều này sau:

    $filteredValues = array_filter($rawValues, function($rawValue) {
        return $this->validateValue($rawValue);
    });

validateValue là một phương thức riêng tư trong cùng một lớp.

Làm thế nào tôi có thể sử dụng $ bối cảnh này trong Array_Filter theo cách này?

Đã hỏi ngày 3 tháng 11 năm 2013 lúc 15:59Nov 3, 2013 at 15:59

Hướng dẫn php array_filter with anonymous function - php array_filter với chức năng ẩn danh

Marty Wallacemarty WallaceMarty Wallace

32.5K53 Huy hiệu vàng134 Huy hiệu bạc198 Huy hiệu đồng53 gold badges134 silver badges198 bronze badges

0

Nếu bạn sử dụng Php 5.3, PHP không nhận ra $this là đóng cửa, bạn cần thực hiện một mẹo như JavaScript:

$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});

Lưu ý rằng những điều trên sẽ chỉ cung cấp cho bạn quyền truy cập vào đối tượng thông qua API công khai của đối tượng. Điều này khác với hỗ trợ 5.4 cho việc đóng cửa đóng cửa cho phép truy cập đầy đủ vào $this.

Đã trả lời ngày 3 tháng 11 năm 2013 lúc 16:02Nov 3, 2013 at 16:02

Hàm ẩn danh giải thích nó với một ví dụ là gì?

Các hàm ẩn danh thường là các đối số được truyền đến các hàm bậc cao hơn hoặc được sử dụng để xây dựng kết quả của hàm bậc cao hơn cần trả về một hàm. Nếu hàm chỉ được sử dụng một lần hoặc số lần giới hạn, hàm ẩn danh có thể nhẹ hơn so với sử dụng hàm được đặt tên.Filters elements of an array using a callback function

Sự mô tả

$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
4 bây giờ là vô hiệu.(array $array, ?callable $callback =
$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
0
, int
$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
1 = 0
): array

Nếu

$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
4 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
Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)
7.array can be reindexed using the array_values() function.

Ví dụ

Ví dụ #1 Array_filter () ví dụ

Ví dụ trên sẽ xuất ra:

Ví dụ #2 mảng_filter () mà không có
$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
4

Ví dụ #3 mảng_filter () với

$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
7

Ghi chúempty() for how PHP defines empty in this case.

Thận trọng

Cờ xác định những đối số nào được gửi đến

$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
4:

  • $self = $this;
    $filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
        return $self->validateValue($rawValue);
    });
    
    9 - Pass Key làm đối số duy nhất cho
    $self = $this;
    $filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
        return $self->validateValue($rawValue);
    });
    
    4 thay vì giá trị
    - pass key as the only argument to
    $self = $this;
    $filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
        return $self->validateValue($rawValue);
    });
    
    4 instead of the value
  • Odd :
    Array
    (
        [a] => 1
        [c] => 3
        [e] => 5
    )
    Even:
    Array
    (
        [0] => 6
        [2] => 8
        [4] => 10
        [6] => 12
    )
    
    1 - Chuyển cả giá trị và khóa làm đối số cho
    $self = $this;
    $filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
        return $self->validateValue($rawValue);
    });
    
    4 thay vì giá trị
    - pass both value and key as arguments to
    $self = $this;
    $filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
        return $self->validateValue($rawValue);
    });
    
    4 instead of the value
Mặc định là
Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)
3 sẽ chuyển giá trị làm đối số duy nhất cho
$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
4 thay thế.

Trả về giá trị

Trả về mảng được lọc.

Thay đổi

Phiên bảnSự mô tả
8.0.0
$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
4 bây giờ là vô hiệu.
8.0.0 Nếu
$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
4 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
Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)
7.
Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)
7
.

Ví dụ

Ví dụ #1 Array_filter () ví dụarray_filter() example

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)
8

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)
9

Array
(
    [0] => foo
    [2] => -1
)
0

Ví dụ trên sẽ xuất ra:

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

Ví dụ #2 mảng_filter () mà không có

$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
4array_filter() without
$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
4

Array
(
    [0] => foo
    [2] => -1
)
2

Array
(
    [0] => foo
    [2] => -1
)
3

Array
(
    [0] => foo
    [2] => -1
)
4

Ví dụ trên sẽ xuất ra:

Array
(
    [0] => foo
    [2] => -1
)

Ví dụ #3 mảng_filter () với

$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
7array_filter() with
$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});
7

Array
(
    [0] => foo
    [2] => -1
)
2

Array
(
    [0] => foo
    [2] => -1
)
7

Array
(
    [0] => foo
    [2] => -1
)
8

Ví dụ trên sẽ xuất ra:

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}

Ghi chú

Thận trọng

Nếu mảng được thay đổi từ chức năng gọi lại (ví dụ: phần tử được thêm, đã xóa hoặc giải phóng), hành vi của hàm này không được xác định.

Xem thêm

  • Array_Intersect () - Tính toán giao điểm của mảng
  • Array_Map () - Áp dụng cuộc gọi lại cho các phần tử của các mảng đã cho
  • mảng_Reduce () - lặp lại giảm mảng thành một giá trị duy nhất bằng cách sử dụng hàm gọi lại
  • Array_walk () - Áp dụng chức năng do người dùng cung cấp cho mọi thành viên của một mảng

Ẩn danh ¶

9 năm trước

Array
(
    [0] => foo
    [2] => -1
)
9

nicolaj dot knudsen tại gmail dot com ¶

5 năm trước

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
0

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
1

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
2

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
3

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
4

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
5

Technyquist ¶

6 tháng trước

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
6

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
7

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
8

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
5

Aschmidt tại Anamera Dot Net

1 năm trước

validateValue0

validateValue1

validateValue2

validateValue3

validateValue4

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
5

Marc dot vanwoerkom tại Fernuni-Hagen Dot de ¶

18 năm trước

validateValue6

validateValue7

validateValue8

validateValue9

$this0

$this1

$this2

$this3

$this4

$this5

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
5

Marc Dot Grey tại Gmail Dot Com ¶

8 năm trước

$this7

$this8

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
5

Niko E ¶

2 tháng trước đây

$this0

$this1

$this2

$this3

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
5

Justinphiggs tại Gmail Dot Com ¶

4 tháng trước

$this5

$this6

$this7

$this8

$this9

PHP có chức năng ẩn danh không?

Các hàm ẩn danh, còn được gọi là đóng cửa, cho phép tạo các chức năng không có tên được chỉ định. Chúng hữu ích nhất là giá trị của các tham số có thể gọi, nhưng chúng có nhiều cách sử dụng khác. Các chức năng ẩn danh được thực hiện bằng cách sử dụng lớp đóng. printf ("Xin chào %s \ r \ n", $ name);Anonymous functions are implemented using the Closure class. printf("Hello %s\r\n", $name);

Hàm Array_Filter trong PHP là gì?

Hàm mảng_filter () lọc các giá trị của một mảng bằng hàm gọi lại.Hàm này chuyển từng giá trị của mảng đầu vào đến hàm gọi lại.Nếu hàm gọi lại trả về true, giá trị hiện tại từ đầu vào được trả lại vào mảng kết quả.Các phím mảng được bảo tồn.filters the values of an array using a callback function. This function passes each value of the input array to the callback function. If the callback function returns true, the current value from input is returned into the result array. Array keys are preserved.

Câu nào không được phép trong hàm ẩn danh?

Câu nào không được phép trong hàm ẩn danh?Kể từ Php 7.1, các biến này không được bao gồm các siêu thị, $ này hoặc các biến có cùng tên với tham số.Một khai báo loại trả về của hàm phải được đặt sau mệnh đề sử dụng.

Hàm ẩn danh giải thích nó với một ví dụ là gì?

Các hàm ẩn danh thường là các đối số được truyền đến các hàm bậc cao hơn hoặc được sử dụng để xây dựng kết quả của hàm bậc cao hơn cần trả về một hàm.Nếu hàm chỉ được sử dụng một lần hoặc số lần giới hạn, hàm ẩn danh có thể nhẹ hơn so với sử dụng hàm được đặt tên.often arguments being passed to higher-order functions or used for constructing the result of a higher-order function that needs to return a function. If the function is only used once, or a limited number of times, an anonymous function may be syntactically lighter than using a named function.