gpt4 book ai didi

php - array_filter 中的回调是否可以接收参数?

转载 作者:IT王子 更新时间:2023-10-29 00:07:29 24 4
gpt4 key购买 nike

我得到了这个名为 $files[] 的多数组,它由如下键和值组成:

[0] => Array
(
[name] => index1.php
[path] => http://localhost/php/gettingstarted/
[number] => 1
)

[1] => Array
(
[name] => index10.php
[path] => http://localhost/php/gettingstarted/
[number] => 2
)

[2] => Array
(
[name] => index11.php
[path] => http://localhost/php/gettingstarted/
[number] => 3
)

我使用此代码创建一个仅包含“名称”键的新数组。但是失败了

array_filter($files, "is_inarr_key('name')");

function is_inarr_key($array, $key)
{
//TODO : remove every array except those who got the same $key
}

我得到这个错误:

array_filter() [function.array-filter]: The second argument, 'is_inarr_key('name')', should be a valid callback in C:\xampp\htdocs\php\gettingstarted\index.php on line 15

所以我的问题是:

  1. 是否可以让array_filter的回调函数接收参数?
  2. 关于如何在任何 PHP 内置函数中使用回调的一般经验法则是什么?

最佳答案

您可以在 PHP ≥5.3 上创建闭包。

array_filter($files, function($array) use ($key) {
return is_inarr_key($array, $key);
} );

如果您受困于 PHP <5.3,...

你可以让$key成为一个全局变量。

function is_inarr_with_global_key($array) {
global $key;
....
}

你可以创建一个类

class KeyFilter {
function KeyFilter($key) { $this->key = $key; }
function is_inarr_key($array) { ... }
}
...
array_filter($files, array(new KeyFilter('name'), 'is_inarr_key'));

您可以创建 3 个不同的函数

array_filter($files, 'is_inarr_name');
array_filter($files, 'is_inarr_path');
array_filter($files, 'is_inarr_number');

您可以编写自己的array_filter

function my_array_filter($files, $key) {
...
}

关于php - array_filter 中的回调是否可以接收参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2529728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com