は、私は、タグPHPでの関数型プログラミングのためにarray_filter()を使用するにはどうすればよいですか?
$all_tags = array('A', 'B', 'C');
の配列を持っていると私は$ _GET変数をURLのセットを作成してみたいと思います。
私がするリンクを希望:
'A'
が"index.php?x[]=A&x[]=C"
にリンク"index.php?x[]=B&x[]=C"
'B'
へのリンクなど (私は簡単にあります知っている($ _GETは、「現在」の要素を除いた全ての要素を持つ配列です)これを実装する方法:実際にはもっと複雑な状況を簡素化しています)
私はこれを解決するためにarray_filter()
を使いたいと思います。
は、ここに私の試みです:
function make_get ($tag) { return 'x[]=' . $tag; }
function tag_to_url ($tag_name) {
global $all_tags;
$filta = create_function('$x', 'global $all_tags; return ($x != $tag_name);');
return 'index.php?' . implode('&', array_map("make_get", array_filter($all_tags, "filta")));
}
print_r(array_map("", $all_tags));
しかし、それは動作しません。私はおそらく、PHPのマップとフィルタがデータ構造自体を実際に変更し、関数型を使用せずにブール値を返すということに疑念を抱いています。
このコードをより簡潔にするための他の方法にも興味があります。 Iコメント(shown here)で得られた回答に基づいて
so ...リンクが何であれ、リンクのコレクションからその特定のエントリを削除し、残りの値でURLを構築しますか? –
これはおそらく次のようなものです:http://www.ideone.com/vVnWe? –
@BradChristie:まったく – amindfv