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

und*_*ned 0 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查询中执行此操作来删除中间人并更新字段?

谢谢

sle*_*led 5

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

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

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

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

  • 问题不在于您使用逗号或分号,问题是您在一个数据库字段(列)中存储了多个值!最好使用外键创建一个额外的表来存储该值的父表.看看http://en.wikipedia.org/wiki/Database_normalization你会在这个新表中有很多新行,但这对你的SQL服务器来说不是问题,实际上它可以加快速度,因为它可以为它编制索引.您也可以直接在DB中执行此操作(array_diff)! (2认同)