2015-12-03 191 views
0

具體數值我有我要搜索一個特定值並執行特定操作的API請求返回一個數組的問題,但我一直在做它的工作不成功的。我已經使用array_search()函數,並根據在這裏和在線閱讀類似的問題做了幾件事情,但仍然沒有運氣。任何人都知道我做錯了什麼?搜索陣列

$responses = explode("\n", file_get_contents($url)); 
print_r($responses); 

的print_r($迴應)顯示:

Array 
(
[0] => destination_msisdn=233887 
[1] => country= 
[2] => countryid= 
[3] => operator= 
[4] => operatorid= 
[5] => authentication_key=XXXXXX 
[6] => error_code=101 
[7] => error_txt=Destination MSISDN out of range 
) 

,這就是我目前在我的代碼爲陣列搜索

if(array_search("error_code=101", $responses)){ 
    echo "Incorrect!"; 
} 

結果我從獲得:

print_r(file_get_contents($url)); 

destination_msisdn=23345678 country= countryid= operator= operatorid= authentication_key=XXXXX error_code=101 error_txt=Destination MSISDN out of range 

請不要試圖炸開任何數組值我試圖在數組中搜索一個字符串並根據我的if語句執行操作。

謝謝

+0

您可以將'print_r(file_get_contents($ url));'的結果添加到您的問題中嗎? – KhorneHoly

+0

問題是什麼? – Rizier123

+0

@ Rizier123問題是我想在if語句不回顯 – Unicornese

回答

2

正如我們在評論你的價值error_code=101是30個字符長,並有可能在年底一些空間發現了,所以這就是爲什麼它不匹配。

現在,您可以在將它分解爲數組時將其移除,例如,

$responses = preg_split("/\s*\n\s*/", file_get_contents($url)); 

或者您爲每個元素刪除它們,例如,

$responses = array_map("trim", $responses); 

此外,我建議你檢查:

array_search("error_code=101", $responses) !== FALSE 

因爲該值的鍵也可以是0,這將導致不能進入if語句。

-1

從您的代碼爲我工作的事實開始。

你可以試着改爲爆炸數組,像這樣搜索字符串?

if(strpos(file_get_contents($url),"error_code=101") !== FALSE) 
    echo "Incorrect!"; 

[編輯]

+0

問題在於,從file_get_contents($ url)返回的內容不是字符串,而是數組,因此會出錯。 – Unicornese

+0

但你做_explode(「\ n」,file_get_contents($ url)); _ explode接受一個字符串作爲第二個參數。 –