1

別の質問で、次のコードで回答されました。

$user_id_ary = array_filter($user_id_ary, function($var) use ($is_anonymous_ary) {
  return !(isset($is_anonymous_ary[$var]) && $is_anonymous_ary[$var] === true);
});

PHP 5.3 で実行されている私のローカルホストでは素晴らしく動作します。つまり、クロージャー (別名匿名関数) をサポートしていますが、PHP 5.2 で実行されているオンライン ホスティングでは動作しません。

PHP 5.3より前で機能するそのコードの代替バージョンはありますか?

ありがとう。

4

3 に答える 3

2

チェックする実際の関数を作成し、その名前を に渡す必要がありますarray_filter

function filter_user_id_ary($var) {
    global $is_anonymous_ary;
    return !(isset($is_anonymous_ary[$var]) && $is_anonymous_ary[$var] === 1);
}

$user_id_ary = array_filter($user_id_ary, 'filter_user_id_ary');
于 2012-10-04T21:00:28.463 に答える
1

元のタスクにはもっと簡単な解決策があります (コールバック関数を含まないという意味で簡単です):

$user_id_ary = array_diff($user_id_ary, array_keys(array_filter($is_anonymous_ary)));
于 2012-10-04T21:46:48.607 に答える
1
$new_array = array();
foreach($user_id_ary as $var){
    if(!(isset($is_anonymous_ary[$var]) && $is_anonymous_ary[$var] === 1))    
        $new_array[$var] = $user_id_ary[$var];
}
于 2012-10-04T21:00:40.253 に答える