我想在函数
中转换下面的代码function filter($row){return ($row['id_menu'] == 10);}
$matches = array_filter($array_mostrar_privilegios, "filter");
foreach ($matches as $element)
{
echo $element['consultar'];
}
像
function filter($row, $num)
{
return ($row['id_menu'] == $num);
}
function find($my_array, $num)
{
$matches = array_filter($my_array, "filter($row, $num)");
foreach ($matches as $element)
{
return $element['consultar'];
}
}
但我不知道如何让它发挥作用
答案 0 :(得分:2)
如果你有PHP 5.3+,那么就不需要使用字符串作为回调参数。 PHP 5.3+具有匿名功能。
$matches = array_filter($my_array, function($row) use($num){
return filter($row, $num);
});
如果你没有PHP 5.3,那么你可以使用create_function
( 警告 :这使用eval()
):
$matches = array_filter($my_array, create_function('$row', 'return filter($row,'.$num.');'));
答案 1 :(得分:2)
使用闭包:
function find($my_array, $num)
{
$matches = array_filter(
$my_array,
function filter($row) use($num) {
return ($row['id_menu'] == $num);
}
);
foreach ($matches as $element)
{
return $element['consultar'];
}
}
除了你在foreach中的返回只返回$ matches
中的第一个元素如果您期望多个$ match值,并想要全部返回,请考虑使用yield将其转换为生成器