PHP数组比较然后删除不在里面的

PHP数组比较然后删除不在里面的,php,Php,我有两个数组值的变量 $val1 = "PRD_65582.jpg,PRD_41088.jpg,PRD_58966.jpg"; $val2 = "PRD_65582.jpg,PRD_58966.jpg"; $val1表示主数据。 $val2表示未检查的值数据 我现在需要做的是检查和比较这两个不再在里面的变量 例如,我们可以在$val2的值上看到,PRD_41088.jpg不包括在内,然后转到查询将其删除 $q = mysqli_query($con, "DELETE FROM tb_produ

我有两个数组值的变量

$val1 = "PRD_65582.jpg,PRD_41088.jpg,PRD_58966.jpg";
$val2 = "PRD_65582.jpg,PRD_58966.jpg";
$val1
表示主数据。
$val2
表示未检查的值数据

我现在需要做的是检查和比较这两个不再在里面的变量

例如,我们可以在
$val2
的值上看到,
PRD_41088.jpg
不包括在内,然后转到查询将其删除

$q = mysqli_query($con, "DELETE FROM tb_product_image WHERE product_image = '$getTheValueNotIncuding'");
 foreach($val1_arr as $element_to_check) {
      if(!in_array($element_to_check, $val2_arr )) {
           $q = mysqli_query($con, "DELETE FROM tb_product_image WHERE product_image = '$element_to_check'");
      }
 }

如果您正在谈论两个值之间的差异,请尝试
print_r(数组_diff(explode(',',$val1),explode(',',$val2))

将值拆分为数组

 $val1_arr = explode(",","PRD_65582.jpg,PRD_41088.jpg,PRD_58966.jpg");
 $val2_arr = explode(",", "PRD_65582.jpg,PRD_58966.jpg");
然后我们循环遍历$val1_arr的内容,检查元素是否不在$val2_arr中。如果元素不存在,我们将其删除

$q = mysqli_query($con, "DELETE FROM tb_product_image WHERE product_image = '$getTheValueNotIncuding'");
 foreach($val1_arr as $element_to_check) {
      if(!in_array($element_to_check, $val2_arr )) {
           $q = mysqli_query($con, "DELETE FROM tb_product_image WHERE product_image = '$element_to_check'");
      }
 }

编辑:正如Progrock指出的,我忘记了函数的第二个参数,因此我的代码无法工作。谢谢你的提醒。:)

首先通过
explode

$val1 = explode(",","PRD_65582.jpg,PRD_41088.jpg,PRD_58966.jpg");
$val2 = explode(",","PRD_65582.jpg,PRD_58966.jpg");
然后使用
array_diff()
获取差异

$result=array_diff($val1,$val2)

然后内爆$result并将其传递给您的查询

$getthevaluenotincluding=内爆(“,”,$result)

如果差异返回多个值,请使用内爆,这样您将处于安全状态

或者,您的查询应该在
中使用
,而不是
=
,因为您不知道会得到多少不同的结果

DELETE FROM tb_product_image WHERE product_image IN('$getTheValueNotIncuding')
#试试代码

那么,您试过什么了吗?问题的标题是关于数组的,但是您的代码中没有一个数组(只有CSV字符串)。甚至很难理解你的问题是什么,但是如果单词与代码不匹配,几乎不可能找出问题所在。这里不是数组中的数据。它包含字符串数据。简单地说:两个CSV字符串都在逗号上。用于获取
$val2
中不存在的值。循环遍历结果数组并删除值。首先分解thiae字符串以获得arra,然后检查inarray元素。您可以删除相同的元素。我可以问为什么这被否决,它回答了问题,并向他解释了整个过程,因为他看起来像个新手。可能是元-有时你会因为回答了一个粗制滥造的问题而被否决。in_数组接受两个论点。你试过你的密码了吗?你的foreach从后面到前面。你试过你的代码了吗?有机会,我在重复我自己,谢谢:)如果没有区别怎么办?检查数组是否为空@prograck