2016-08-01 36 views
1

我有一個失敗的程序,因爲它在數組搜索中找不到$post,所以它每次都會繼續添加。我已經使用了其他建議的使用foreach循環的方法,使用strpos,例如: if (strpos($data, $posts) !== false),並且這將工作找到$post,但它也會找到剩餘部分並針對數據/數組中的所有內容運行。因此,爲什麼我只是喜歡它來搜索數組,如果它不在那裏添加它,如果它是,只是說它在那裏或檢入...我花了3天使用in_arrayarray_search等,現在我是求助...無法從數組中執行簡單的數組搜索

<html> 
<body> 
<?php 
$post = $_POST['name']; 
$data = file("data.txt"); 
if (in_array($post, $data)) { 
    echo "$post is checking in..."; 
} 
else { 
    echo "Adding to $data..."; 
    $data = fopen("data.txt", "a+"); 
    fwrite($data, $post.PHP_EOL); 
    fclose($data); 
} 
$data = file("data.txt"); 
foreach ($data as $d) { 
    echo $d; 
} 

?> 

</body> 
</html> 

tclient.html

<html> 
<body> 

<form action="test4.php" method="POST"> 
Name: <input type="text" name="name"><br> 
<input type="submit"> 
</form> 

</body> 
</html> 

的data.txt

Names 
John 
Doe 

回答

1

$post值可能沒有在最後一個新行。當您使用file()時,您可以指定不包含新行。

file("data.txt", FILE_IGNORE_NEW_LINES); 
+0

有趣的是,您必須標記此行爲。這將是相當明智的默認行爲。 –

+0

謝謝,現在像一個魅力... –

+0

@JasonOwens不客氣。 –