PHP在数组中添加或减去元素

时间:2014-04-21 18:50:24

标签: php arrays

我有一个查询字符串。例如:

?filters=1,2,3,4

它变成了一个数组:

$filters = explode(',', $_GET['filters']);

您可以在

上推送新值
$filters = array_push($filters, $new->filter);

然后将其转换为查询字符串

http_build_query($filters);

或者,删除一个值

$filters = array_diff($filters, [$new->filter]);

然后将其转换为查询字符串

http_build_query($filters);

我正在寻找一个优雅的解决方案来移除已存在的项目,或者如果该项目不存在则添加该项目。也欢迎替代解决方案。

谢谢。

3 个答案:

答案 0 :(得分:3)

希望我能正确理解你“我正在寻找一个优雅的解决方案,如果它已经存在则删除该项目,或者如果该项目不存在则添加该项目。”。此外,不确定它是否优雅,但可能引发其他想法:

$filters = in_array($new->filter, $filters) ?
    array_diff($filters, [$new->filter]) :
    array_merge($filters, [$new->filter]);

答案 1 :(得分:2)

除非你想使用PHP的数组符号“hack”,否则它会变得优雅,例如。

?filters[]=1&filters[]=2&filters[]=3&etc...
        ^^---

这样可以保存explode()阶段,并且您可以直接将$_GET['filters']视为数组,但代价是更丑/更长的网址。

答案 2 :(得分:0)

也许你应该编写2个函数,“删除”和“添加”,这将每个循环遍历数组寻找有问题的值。然后remove函数可以删除它,add函数可以添加它。函数本身不会那么优雅,但在代码的其他地方使用它们会很简单。