2013-09-21 3 views
2
$eventnameentered= $_GET['eventnameentered']; 
$eventnameentered= strtolower($eventnameentered); 

$eventindatabase=file('eventname.txt'); 

if(in_array($eventnameentered,$eventindatabase)){ 
    echo 'Entered Event Name '.$eventnameentered.' Is Already Taken'; 
}else if($eventnameentered==''){ 
    echo 'Please Enter Name Of New Event'; 
} 
else 
{ 
    echo 'Event Name '.$eventnameentered.' Is Available '; 
} 

event.txtпреобразования .txt файл в массив и сравнение

gaming 
coding 
project 

i'am с помощью AJAX. Все работает нормально, мне просто нужна помощь в этом массиве.

Я хочу сравнить eventname от пользователей и eventname уже присутствует в event.txt не сталкиваются. Поэтому я хочу event.txt в массиве. Я сравниваю его с in_array, как показано в приведенном выше коде, но даже если я вставляю событие в event.tx t, он показывает Event name Available. Я даже пытался использовать get_file_contents.

+0

Значения в файле с нижним регистром также? 'in_array()' чувствителен к регистру –

+0

вы уверены, что значение '$ eventnameentered' ожидалось? эхо его –

+0

да все значения являются низкими футлярами –

ответ

2

Пробел вызывает у вас состояние if. Сначала вам нужно указать trim пробел.

$eventindatabase = file('eventname.txt'); 
$eventindatabase = array_map('trim', $eventindatabase); 

Вот выход var_dump($eventindatabase) до и после обрезки пробельные:

Перед:

array(3) { 
    [0]=> 
    string(7) "gaming 
" 
    [1]=> 
    string(7) "coding 
" 
    [2]=> 
    string(7) "project" 
} 

После:

array(3) { 
    [0]=> 
    string(6) "gaming" 
    [1]=> 
    string(6) "coding" 
    [2]=> 
    string(7) "project" 
} 

Как вы можете видеть, первые два элемента отличаются, и это приведет к тому, что следующее условие будет оцениваться до FALSE, следовательно, вызывая else заявление:

if(in_array($eventnameentered,$eventindatabase)) 

Надеется, что это помогает!

+0

возможно, есть вкладки или пробелы, заполняющие материал в файле, но в строках не должно быть никаких строк новой строки, как показано в вашем примере, поскольку 'file()' помещает содержимое файла в массив на основе символов новой строки –

+0

@CrayonViolent: возможно использовать флаг 'FILE_IGNORE_NEW_LINES', если вы не хотите добавлять новые строки в конце, если это то, о чем вы говорите. –

+0

Нет, я говорю о разделителе 'file()' использует для разбиения файла на элементы массива. Он разбивает его на символ новой строки –

Смежные вопросы