2013-03-29 137 views
2

我有2個字符串,我想比較差異並使用這些不同的項目的值。例如:逗號分隔字符串之間的比較差異

$stringA = "1, 2, 3, 4, 5" 
$stringB = "1, 2, 4, 5, 6" 

所以與stringB的區別在於缺少'3'並且添加了'6'。

我想執行一個使用值'3'和'6'的函數。把它放在上下文中,想象這些字符串用在MySQL查詢中,我只想更新id爲3和6的記錄,因爲它們已經更改,所以需要更新,但其餘部分保持不變,因此不需要更新數據庫記錄那些。我希望這是有道理的?

如何使用PHP獲得差異並確保結果再次是逗號分隔值的字符串?即

$stringDifference = "3, 6" 
+0

是總是5個數字的字符串? –

+0

嘗試用php array_diff函數。將這兩個字符串分解爲數組,然後獲得差異,並再次使用implode函數將數組轉換爲字符串。 – Neo

+0

沒有字符串可以在任何時候有更多或更少的值 – Bobster4300

回答

6

通過我的機器上的代碼只是跑,這樣便解決了招

$stringA = "1, 2, 3, 4, 5"; 
$stringB = "1, 2, 4, 5, 6"; 

$stringA = explode(',', $stringA); 
$stringB = explode(',', $stringB); 

$Difference_1 = array_diff($stringA, $stringB); // Check string A Against String B 
$Difference_2 = array_diff($stringB, $stringA); // Check String B against String A 
$Difference = array_merge($Difference_1, $Difference_2); // Merge the two difference arrays together 
$Difference = implode(',', $Difference); // Convert to a string 
echo "The Difference Between The Two Is: ".$Difference; // Echo the difference 

更新

function Differences ($Arg1, $Arg2){ 
    $Arg1 = explode (',', $Arg1); 
    $Arg2 = explode (',', $Arg2); 

    $Difference_1 = array_diff($Arg1, $Arg2); 
    $Difference_2 = array_diff($Arg2, $Arg1); 
    $Diff = array_merge($Difference_1, $Difference_2); 
    $Difference = implode(',', $Diff); 
    return "The Difference Between The Two Is: ".$Difference; 
} 

$stringA = "1, 2, 3, 4, 5"; 
$stringB = "1, 2, 4, 5, 6"; 


// Call By: 

echo Differences($stringA, $stringB); 

對不起,我與更新的延遲。我已經習慣了PHPStorm作爲一個新的腳本編輯器。

+0

太近了!我只是嘗試了代碼,雖然它確實說'3'是不同的,但它沒有提及$ Difference字符串中'6'的任何內容? – Bobster4300

+0

我剛纔注意到了。我現在正在爲它修復。裸我 –

+0

我認爲它必須顛倒,array_diff($ stringB,$ stringA)會發現6 –

0
function getDif(stringA, stringb){ 
    $stra = explode(",", $stringA); 
    $strb = explode(",", $stringB); 
    $viola = array_diff($stra,$strb); 
    return $voila 
} 
+0

稍多的上下文將改善此答案。 –