Pat*_*ros 2 php arrays callback array-filter
我最初有一个大数组,我从数据库中得到了一个简短的版本:
$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
)
);
Run Code Online (Sandbox Code Playgroud)
一直进行到“ R1”元素值为56。
因此,我想分离R1的每组值,例如,仅当R1等于1时,我通过使用以下函数将每个“ concurso”的值存储在一个名为“ $ concursos”的数组中:
function category($var)
{
return (is_array($var) && $var['R1'] == 1);
}
$current=array_filter($arreglo,"category");
Run Code Online (Sandbox Code Playgroud)
到现在为止一切正常,因为当R1 = 1时,我仅在R1 = 1时获得该列表,如下所示:
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
)
Run Code Online (Sandbox Code Playgroud)
问题是,如果我想再次在for循环中使用以下数字(其中R1 = 2,3,... 56)来进行此操作,则无需指定== 1,而是将== $ currentR1设置为像这样的功能:
function category($var)
{
return (is_array($var) && $var['R1'] == $currentR1);
}
$current=array_filter($arreglo,"category");
Run Code Online (Sandbox Code Playgroud)
现在的问题是,如果我尝试输入参数,则函数调用失败,如何在此处指定参数?
例如,我尝试过
$current=array_filter($repeticiones,array('category',$l));
Run Code Online (Sandbox Code Playgroud)
它无法警告我
警告:array_filter()期望参数2是有效的回调,第二个数组成员在X行的myScript.php中不是有效的方法
那我该如何指定参数呢?
您可以使用如下匿名函数:
$r = 2;
$current = array_filter($arreglo, function($var) use ($r){
// ^ import variable to the closure scope
return (is_array($var) && $var['R1'] == $r);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5905 次 |
| 最近记录: |