2013-08-17 40 views
0

我遇到了一些與檢查特定匹配的返回數組有關的問題。檢查某個特定單詞是否在數組中

這裏是我做的:

我查詢服務器API和API使用返回打印結果:

print_r($result); 

打印的結果是:

Array 
(
    [<html><center>Password_Saved!</center></html>] => 
) 

所以我想我可以這樣做:

function checkResult ($needle, $haystack) { return (stripos($haystack,$needle) !== false ? TRUE : FALSE); } 

if ((checkResult("saved",$result))) { 
echo "saved"; 
} else { 
echo "not saved"; 
} 

但是,這根本不起作用,所以我想知道,如果$ result包含保存的字符串,是否可以幫助我找到一種方法,因爲我需要知道這一點以根據結果執行下一個操作。

您的幫助將不勝感激。

+2

'stripos'需要一個*字符串*作爲乾草堆。你傳入*一個數組* ......它悄悄地轉換爲字符串'「數組」(並在更新版本的PHP中發出警告)。 – DCoder

回答

2

您正在查找的值存在於數組的鍵而不是值中。 因此,您需要在數組的鍵中而不是數值中進行搜索。

foreach ($result as $key => $value) 
{ 
    if (false !== stripos ($key, "saved")) 
    { 
     print "{$key} => Saved"; 
    } 
} 
+0

這是正確解決問題的唯一答案。 – BenM

+0

@BenM:爲什麼?這是不區分大小寫的 – Itay

+0

這很好用。再次感謝,這確實幫了我很多,我從中學到了一些東西:) –

0

閱讀關於PHP preg_grep function

例如:

$needle_pattern = '/search/i'; // i for case insensitive 
preg_grep($needle_pattern, $array_haystack); 

還要注意,在你的代碼你混 「保存」 和 「保存」,這是不同的:)

爲了進一步閱讀關於此方法:

How to search in an array with preg_match?

P.S如果您的「haystack」實際上是鍵,您可以使用array_keys($ array_haystack)切換$ array_haystack以獲取所有鍵的數組。

+0

這不起作用,因爲'saved'只是部分匹配。另外,看他提供的打印輸出,它看起來像'

Password_Saved!
'實際上是數組**鍵**,而不是它的值。 – BenM

+0

再次請檢查輸出。這不是搜索數組的值,而是搜索數組的值... – BenM

+0

再次,固定(最新評論) – Itay

0

它不起作用,因爲當您在字符串中的值爲Saved時,您正在搜索saved。你應該傳遞你的數組密鑰。

if ((checkResult("Saved",array_keys($result)[0]))) { 
echo "saved"; 
} else { 
echo "not saved"; 
} 
+1

請檢查OP提供的'$ result'數組的輸出。它看起來像'

Password_Saved!
'實際上是數組**鍵**,而不是它的值。此外,這不會返回真正的部分匹配,這是OP所要求的。 – BenM

+0

編輯後不好,或者。 'stripos'需要一個字符串,而不是一個數組。 – BenM

+0

@BenM我不明白你是什麼意思的比賽只會是部分 – DevZer0

相關問題