假设我有一组标签
$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 中的映射和过滤器如何实际改变数据结构本身并返回一个布尔值有关,而不是使用函数式样式,它们不会改变并返回一个新列表。
我也对其他使代码更简洁的方法感兴趣。