我有一个php逗号分隔的字符串
$string = (x,y,z)
我在mysql中有一个包含项目(y,z)的列
如何比较两者并回显$ string中哪些项不在列中?
答案 0 :(得分:1)
我认为应该这样做。祝你好运。
$myString="v1,v2,v3";
$stringA=explode(",",$myString);
$result=mysql_query("SELECT * FROM data");
while($row = mysql_fetch_array($result)){
$data=$row['dataColumn'];
if (!in_array($data,$stringA)) echo $data . "<br>";
}//end while
如果您需要在列中展开数据,我们可以更深入。
$myString="v1,v2,v3";
$stringA=explode(",",$myString);
$result=mysql_query("SELECT * FROM data");
while($row = mysql_fetch_array($result)){
$data=$row['dataColumn'];
$da=explode(",",$data);
foreach($da as $value) if (!in_array($value,$stringA)) echo $data . "<br>";
}//end while
答案 1 :(得分:0)
这背后的逻辑首先是使用explode(", ", $string)
函数爆炸字符串
这样它就会成为一个阵列。
另一方面,使用函数in_array()
,
例如:
$a = array(array('p', 'h'), array('p', 'r'), 'o');
if (in_array(array('p', 'h'), $a)) {
echo "'ph' was found\n";
}
//output : 'ph' was found
答案 2 :(得分:0)
你可以用一个查询解决这个问题,只检索不匹配的行,例如:
$string= "(str1, str2, str3)"; //formatted as the OP indicated
$input = explode(",",trim($string,"() "));
$filter = "(".$input[1].",".$input[2].")";
$sql = "select interestingColumn from greatTable where interestingColumn not like '".$filter."'";
$rez = mysql_query($sql);
while($row = mysql_fetch_array($rez)){
echo $row["interestingColumn"]."<br>\n";
}
这样做的另一个好处是可以从数据库中检索更少的结果,特别是如果您有一个大型数据集,这是理想的
编辑:在第二行修改了拼写错误(感谢Michael)
答案 3 :(得分:0)
我认为你想用两个逗号分隔的字符串计算不同。
只需使用explode
将字符串转换为数组,然后使用array_diff
array_diff
- 计算数组的差异
示例:
<?php
$array1=explode(",",$string);
$array2=explode(",",$yourstring_of_db_column);
$array1 = array("x", "y", "z");
$array2 = array( "y","z");
$result = array_diff($array1, $array2);
print_r($result);
?>
请注意使用===比较值,因此1和“1”被认为是不同的。