Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数组中删除值数组的最佳方法是什么?_Php_Mysql_Arrays - Fatal编程技术网

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

Php 从数组中删除值数组的最佳方法是什么?,php,mysql,arrays,Php,Mysql,Arrays,我希望能够轻松快速地从干草堆阵列中删除一组针。事实上,我有一个逗号分隔的数字列表(虽然这是我知道的字符串),需要从我从sql数据库中的字段中提取的第二个逗号分隔的数字列表中删除 所以我需要- $orig_needle_list=“34565678”; haystack列表位于mysql数据库的一个字段中,是“3456456786789”-所以我基本上想将这个字段更新为“45676789” 问题1。我是否应该检索haystack列表,将两者转换为数组,并使用嵌套的foreach循环和数组对它们进行

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

所以我需要-

$orig_needle_list=“34565678”; haystack列表位于mysql数据库的一个字段中,是“3456456786789”-所以我基本上想将这个字段更新为“45676789”

问题1。我是否应该检索haystack列表,将两者转换为数组,并使用嵌套的foreach循环和数组对它们进行迭代,以匹配任何值

Q2我可以使用in_数组比嵌套foreach方法更快吗

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


谢谢

我想你是在找array_intersect()

我想你是在找array_intersect()

试试这个:

implode(",",array_diff(explode(",",$haystack),explode(",",$orig_needle_list)));
试试这个:

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

您不需要迭代,有一个名为array_diff的函数:

因此,创建逗号分隔列表的两个数组并使用array_diff,得到的数组就是这两个数组的差


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

您不需要迭代,有一个名为array_diff的函数:

因此,创建逗号分隔列表的两个数组并使用array_diff,得到的数组就是这两个数组的差


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

为什么要这样存储数据?这听起来像是在某种程度上,你或其他人打破了规范化规则。为什么一开始就要这样存储数据?听起来好像是你或其他人违反了规范化规则。谢谢-你是说我不应该用逗号来分隔值吗?在其他字段中,我使用了分号。这样可以吗?问题不是您使用逗号或分号,而是您在一个数据库字段(列)中存储了多个值!最好创建一个额外的表,该表的父表带有一个外键来存储值。看看这个新表,您将有许多新行,但这对SQL server来说不是问题,它确实加快了速度,因为它可以对它进行索引。您还可以直接在数据库中执行此操作(array_diff)!谢谢-你的意思是我不应该用逗号分隔值吗?在其他字段中,我使用了分号。这样可以吗?问题不是您使用逗号或分号,而是您在一个数据库字段(列)中存储了多个值!最好创建一个额外的表,该表的父表带有一个外键来存储值。看看这个新表,您将有许多新行,但这对SQL server来说不是问题,它确实加快了速度,因为它可以对它进行索引。您还可以直接在数据库中执行此操作(array_diff)!