这就是我目前所发现的。
这个trick 我使用的是一个不存在的2-nd参数,名为$recursive
确定我是否处于递归循环中。默认值为false
, 所以$is_multiple
循环被触发。然后我经过一个true
对于函数调用,禁止通过可能存在的子数组进行循环。
之所以可以这样做,唯一的原因是当我的函数的参数比apply_filters()
有
function wpse63692_example_cb( $data, $recursive = false )
{
$result = $data;
if ( 1 < count( $data ) AND ! $recursive )
{
$result = array();
foreach ( $data as $key => $value )
$result[ $key ] = call_user_func( __FUNCTION__, $value, true );
}
return $result;
}
add_filter( \'wpse63692_example_filter\', \'wpse63692_example_cb\' );