2016-10-08 83 views
-2

我想檢查圖像的文件名是否包含「封面」。不知何故,這停止爲我工作(很確定它已經工作了)。我複製了我的功能不工作的部分。PHP的array_search不工作(返回空字符串)

$name=array("_IMG8555.jpg", "_IMG7769.jpg", "_IMG8458.jpg", "Cover.jpg", "_IMG7184.jpg"); 
$cov=array("Cover.png","Cover.jpg","Cover.jpeg", "cover.png","cover.jpg","cover.jpeg"); 

這並沒有爲我工作:

print_r(array_search($cov, $name)); //Returns empty String 
print_r($name[array_search($cov, $name)]); //Returns first element of the name Array 

我也加入了測試的字符串,以確保這不會導致搜索字符串是一樣的搜索值。

print_r($name[3]===$cov[1]); //Returns true(1) 

任何人都可以幫忙嗎?爲什麼這個簡單的腳本不起作用?

我也嘗試過使用in_array(),但這也不起作用。

+0

你在哪裏提供你的文件名搜索!我發現它不在哪裏。 – ameenulla0007

+0

'array_search'的第一個參數應該是你想在第二個數組中搜索的字符串(文件名)。 –

+0

你需要翻轉'needle'和'haystack',再加上你將兩個參數作爲數組傳遞。 RTM,[http://php.net/manual/en/function.array-search.php](http://php.net/manual/en/function.array-search.php)。 –

回答

0

的array_search()函數搜索值的陣列和返回鍵

array_search(key_value,array) 

循環您$ COV陣列,並得到一次一個鍵和$ name數組檢查

foreach($cov as $i => $cov_s){ 
if(in_array($cov_s, $name)){ 
    return $name[array_search($cov_s, $name)]; 
} 
} 
return $name[0]; 
0

試試這個代碼。

$name=array("_IMG8555.jpg", "_IMG7769.jpg", "_IMG8458.jpg", "Cover.jpg", "_IMG7184.jpg"); 
$cov=array("Cover.png","Cover.jpg","Cover.jpeg", "cover.png","cover.jpg","cover.jpeg"); 

foreach($cov as $c){ 
    if(array_search($c,$name)){ 
     //Do your success function 
     return true; 
    } 
    else 
     return false; 
}