2016-08-01 33 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不客气。 –