タグの配列があるとします
$all_tags = array('A', 'B', 'C');
そして、$_GET 変数を使用して一連の URL を作成したいと考えています。
リンクを次のようにしたいと思います:
'A'
リンク先への"index.php?x[]=B&x[]=C"
'B'
リンク先"index.php?x[]=A&x[]=C"
など ($_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のマップとフィルターが実際にデータ構造自体を変更し、機能的なスタイルを使用する代わりにブール値を返す方法に関係している可能性があるのではないかと疑っています。
このコードをより簡潔にする他の方法にも興味があります。