从数组中删除值数组的最佳方法是什么?

时间:2010-09-07 15:14:24

标签: php mysql arrays

我希望能够轻松快速地从大海捞针阵列中删除一系列针头。实际上我有一个逗号分隔的数字列表(虽然这是我知道的字符串),需要从我从sql数据库中的字段中提取的第二个逗号分隔的数字列表中删除。

所以我需要 -

$ orig_needle_list =“3456,5678”; 干草堆列表位于mysql数据库的一个字段中,是“3456,4567,5678,6789” - 所以我基本上想把这个字段更新为“4567,6789”

Q1。我应该检索干草堆列表,将它们转换为数组并使用嵌套的foreach循环和array_splice任何匹配的值迭代它们吗?

Q2我可以使用in_array比嵌套的foreach方法更快吗?

Q3有没有办法在sql查询中执行此操作来删除中间人并更新字段?

感谢

3 个答案:

答案 0 :(得分:5)

你不需要迭代事物,有一个叫做array_diff的函数:

http://www.php.net/manual/en/function.array-diff.php

因此,创建逗号分隔列表的2个数组并使用array_diff,结果数组是这两个的差异。

在数据库中存储以逗号分隔的列表不是一个好主意,因为它会破坏规范化。

答案 1 :(得分:0)

我认为您正在寻找array_intersect()http://php.net/manual/en/function.array-intersect.php

答案 2 :(得分:0)

试试这个:

implode(",",array_diff(explode(",",$haystack),explode(",",$orig_needle_list)));