PHP警告:array_filter()要求参数2是有效的回调,第二个数组成员不是有效的方法
我最初有一个大数组,它是我从数据库中获得的一个简短版本:PHP警告:array_filter()要求参数2是有效的回调,第二个数组成员不是有效的方法,php,arrays,callback,array-filter,Php,Arrays,Callback,Array Filter,我最初有一个大数组,它是我从数据库中获得的一个简短版本: $arreglo =Array ( "0" => Array ( "concurso" => 2600, "R1" => 1 ), "1" => Array ( "concurso" => 2602, "R1" => 1 ),
$arreglo =Array
(
"0" => Array
(
"concurso" => 2600,
"R1" => 1
),
"1" => Array
(
"concurso" => 2602,
"R1" => 1
),
"2" => Array
(
"concurso" => 2603,
"R1" => 1
),
"3" => Array
(
"concurso" => 2648,
"R1" => 1
),
"4" => Array
(
"concurso" => 2653,
"R1" => 1
),
"5" => Array
(
"concurso" => 2655,
"R1" => 1
),
"6" => Array
(
"concurso" => 2698,
"R1" => 1
),
"7" => Array
(
"concurso" => 2722,
"R1" => 1
),
"8" => Array
(
"concurso" => 2741,
"R1" => 1
),
"9" => Array
(
"concurso" => 2743,
"R1" => 1
),
"10" => Array
(
"concurso" => 2744,
"R1" => 1
),
"11" => Array
(
"concurso" => 2745,
"R1" => 1
),
"12" => Array
(
"concurso" => 2763,
"R1" => 1
),
"13" => Array
(
"concurso" => 2778,
"R1" => 1
),
"14" => Array
(
"concurso" => 2780,
"R1" => 1
),
"15" => Array
(
"concurso" => 2782,
"R1" => 1
),
"16" => Array
(
"concurso" => 2607,
"R1" => 2
),
"17" => Array
(
"concurso" => 2609,
"R1" => 2
)
);
它一直持续到“R1”元素值为56
因此,我想分离R1的每一组值,例如,当R1等于1时,我使用以下函数将“concurso”的每一个值存储在一个名为“$concursos”的数组中:
function category($var)
{
return (is_array($var) && $var['R1'] == 1);
}
$current=array_filter($arreglo,"category");
到目前为止一切正常,因为,当R1=1时,我只得到R1=1时的ConcurSo列表,如下所示:
Array
(
[0] => 2600
[1] => 2602
[2] => 2603
[3] => 2648
[4] => 2653
[5] => 2655
[6] => 2698
[7] => 2722
[8] => 2741
[9] => 2743
[10] => 2744
[11] => 2745
[12] => 2763
[13] => 2778
[14] => 2780
[15] => 2782
)
问题是,如果我想对for循环中R1=2,3,…56的以下数字再次执行此操作,那么,我将在函数中设置==$currentR1,而不是指定==1:
function category($var)
{
return (is_array($var) && $var['R1'] == $currentR1);
}
$current=array_filter($arreglo,"category");
$r = 2;
$current = array_filter($arreglo, function($var) use ($r){
// ^ import variable to the closure scope
return (is_array($var) && $var['R1'] == $r);
});
现在的问题是,如果我尝试放置一个参数,函数调用失败,我如何在这里指定一个参数
我试过,比如
$current=array_filter($repeticiones,array('category',$l));
但它没有警告我
警告:array_filter()要求参数2为有效回调,第二个数组成员不是第X行myScript.php中的有效方法
那么如何指定参数?您可以使用如下匿名函数:
function category($var)
{
return (is_array($var) && $var['R1'] == $currentR1);
}
$current=array_filter($arreglo,"category");
$r = 2;
$current = array_filter($arreglo, function($var) use ($r){
// ^ import variable to the closure scope
return (is_array($var) && $var['R1'] == $r);
});
您可以编写一个返回另一个函数的函数,该函数可以传递给
array\u filter()
:
使用匿名函数,如下所示:
for($r = 1; $r < 56; $r++){
$current=array_filter($arreglo,function ($var) use ($r) { return ($var['R1'] == $r); });
...do something with $current...
}
($r=1;$r<56;$r++)的{
$current=array_filter($arreglo,function($var)use($r){return($var['R1']=$r);});
…使用$current执行某些操作。。。
}
array('category',$l)
---你想用这个表达什么?@zerkms谢谢。我有时会混淆JavaScript和PHP:)老实说,我也犯过同样的错误:遗漏了分号,最初留下了嵌套函数名:-)