我有一個PHP逗號分隔字符串 $string = (x,y,z)
比較陣列到MySQL列,並找到無與倫比的項目
我在mysql中有一個列有項目(Y,Z)
我如何比較這兩個並回聲$ string中的哪些項目不在列中?
我有一個PHP逗號分隔字符串 $string = (x,y,z)
比較陣列到MySQL列,並找到無與倫比的項目
我在mysql中有一個列有項目(Y,Z)
我如何比較這兩個並回聲$ string中的哪些項目不在列中?
我想你想計算differente兩個逗號組合通道ated字符串。
使用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」被認爲是不同的。
這背後的邏輯是首先用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
這並不能解釋如何與存儲在MySQL中的數據進行比較。 –
@MichaelMior我剛剛清除了邏輯,因爲提問者沒有提供任何代碼, –
OP沒有提到有關嵌套數組的任何內容。你可以考慮簡化你的例子。 –
我認爲應該做的伎倆。祝你好運。
$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
很少有很好的理由來做'SELECT * FROM data'。如果目標是檢查一列的值,那麼最好只選擇該列。考慮只爲需要測試的行取代數據,而不是整個表也是很好的做法。 –
是的,我知道這一點。我習慣這樣做。 –
只是指出這是爲了OP的好處,因爲這是不好的做法。 –
,你可以使用一個查詢解決這個問題,只是檢索不匹配的行,例如:
$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";
}
這有來自數據庫,這是理想的檢索結果較少的好處特別是如果你有一個大的數據集
編輯:固定在第二行一個錯字(感謝邁克爾)
@Bogan'$ filter'中的東西需要被引用並且可能會被轉義。第二行還有幾個語法錯誤。 –
是的,顯然你需要過濾你的數據並使其安全,我試圖用準系統實現來顯示一般想法(沒有運行代碼,所以語法錯誤很可能) – Bogdan
這不是一個有效的$字符串? – Josh