2014-01-10 54 views
0

I的一部分有兩個字符串:檢查是否源串的元素是目標

$source = "AA|BB|CC|DD"; 
$target = "AA|CC|DD|EE|BB"; 

在兩個分隔符是|

我必須找出如果源的元素存在於目標或不 。 (以任何順序)

如果源的元素存在於target中,程序應返回true否則返回。

要做到這一點,我存儲各自爲陣的$source$target和使用array_intersect

$source_arr = explode("|",$source); 
$target_arr = explode("|",$target); 

$exists = (count($source_arr) == count(array_intersect($source_arr, $target_arr))); 
if ($exists == 1) { 
    echo "True"; 
else { 
    echo "False"; 
} 

程序總是返回false

誰能告訴我我哪裏出錯了嗎?

+0

你對線的額外「1個 – Rottingham

+1

正常工作對我來說:[** **鍵盤(http://codepad.org/3XZ7OcPQ) – newfurniturey

+0

@Rottingham對不起糾正它 – Ank

回答

0

嘗試

$count = 0; 
    foreach($sourcearray as $item){ 
    if(in_array($item, $targetarray)) 
     $count++; 
    } 
    if (count($sourcearray) == $count) 
    echo "true"; 
    echo "false"; 
+0

這將返回'true'在它找到的第一個項目中存在; OP希望「全部」存在。也許如果你反轉你的邏輯有點可以工作。 – newfurniturey

+0

OP的代碼實際上可以工作,所以我建議不要花太多時間在它上面。 (您仍然有多個錯誤。) – Jessica

+0

對工作解決方案進行降薪總是很不錯的。 – makallio85