2014-01-13 46 views
1

我有以下代碼array_search/in_array無法找到字符串

$checkarray = unserialize(file_get_contents('serialized.txt')); 

var_dump($checkarray); 
foreach($checkarray as $_index => $_image) 
{ 
    echo strval($_index)." = ".var_dump($_image)."<br>"; 
} 
var_dump(array_search('pirates_of_love_and_kingdoms.jpg',$checkarray)); 
var_dump(in_array('pirates_of_love_and_kingdoms.jpg',$checkarray)); 

「serialized.txt」的內容可以發現herehttp://textuploader.com鏈接,而不是一個下載鏈接,將需要複製和粘貼如果你想使用它,請將其轉換爲新文件)

第一個var_dump輸出數組但是因爲我有xdebug不是整個數組輸出,我不希望得到這個固定的,它只是確認文件被導入並正確地反序列化,循環會輸出數組中的所有內容,以確認每個值都是一個字符串(感謝xdebug),最後的2 var_dumps是輸出函數的結果。

當我運行我的代碼時,兩個var_dump的輸出都是false,但是如果我使用瀏覽器搜索文本,我會發現它,所以我知道它在數組中。

我知道array_search返回數組中的鍵,如果找到了針,而in_array如果找到了針,則返回true,如果找不到針,則返回false,但是我不知道如何都不能找到它時,我可以確認它是在循環中輸出,並在我的serialized.txt文件中與文件中指定的索引相同。

我已經檢查了基本知識,空白處,新行,在屏幕上和文件中輸出的內容,任何人都可以向我解釋我做錯了什麼?

+0

檢查空格,換行,大小寫等你說字符串是在你的文件 - 這些功能正在尋找它**作爲數組項**沒有別的參與在裏面。另外,使用'file()'將文本文件讀入一個數組而不是'file_get_contents()' –

+0

@scrowler我使用'file_get_contents()',因爲它獲取它作爲一個字符串而不是數組,如果你看在我上傳的文本文件中,您會看到它是一個序列化的字符串,我在2個函數中搜索的內容與我在瀏覽器中搜索的內容以及記事本++中的內容相同 –

回答

1

每行結尾處的換行符都會給您帶來問題。做一個trim裏面你foreach

$checkarray = unserialize(file_get_contents('serialized.txt')); 

var_dump($checkarray); 
foreach($checkarray as $_index => $_image) 
{ 
    $checkarray[$_index] = trim($_image); 
    echo strval($_index)." = ".var_dump($_image)."<br>"; 
} 
var_dump(array_search('pirates_of_love_and_kingdoms.jpg',$checkarray)); 
var_dump(in_array('pirates_of_love_and_kingdoms.jpg',$checkarray)); 
+0

感謝,奇怪的是,正如我所說的,我使用記事本++使用擴展搜索搜索'\ n',它不返回任何內容,是否有另一個不可見的換行符值? –