Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: не могу правильно прочитать массив
Форумы портала PHP.SU » PHP » Программирование на PHP » не могу правильно прочитать массив

Страниц (1): [1]
 

1. virginkoks - 01 Июня, 2009 - 18:05:42 - перейти к сообщению
есть файл test.txt
в нем 3 строчки - test1, test2, и test3.

суть проблемы:

$t=file("test.txt") ;
if (in_array("test1",$t)) echo "fuck" ;

не работает такой фак, но! если искать не test1 а test3 то все прекрасно работает.
как быть?!

спасибо
2. Stierus - 01 Июня, 2009 - 18:14:21 - перейти к сообщению
0 считается как false Улыбка))

замени на
3. virginkoks - 01 Июня, 2009 - 18:18:09 - перейти к сообщению
но дело не в этом!

ибо почему же тогда поиск test3 удачен?
а по вашему test2 должен дать единицу?
(Добавление)
для чистоты эксперимента я заменил in_array на $x=array_search("test1",$t); echo $x;

нету икса

при поиске test3 правильно показывает индекс 2
4. Гость - 01 Июня, 2009 - 18:25:06 - перейти к сообщению
virginkoks Так в этомто и дело - эти функции ищут номер индекса элемента в массиве а он равен нулю (Самый первый индекс это ноль) Поэтому надо использовать === (Равеонство с проверкой типа) чтобы 0 не считался как false
5. virginkoks - 01 Июня, 2009 - 18:27:13 - перейти к сообщению
JustUserR пишет:
virginkoks Так в этомто и дело - эти функции ищут номер индекса элемента в массиве а он равен нулю (Самый первый индекс это ноль) Поэтому надо использовать === (Равеонство с проверкой типа) чтобы 0 не считался как false



in_array не ищет индекс
6. Stierus - 01 Июня, 2009 - 18:35:56 - перейти к сообщению
Сори, это меня под вечер клинить начинает. Возможно, дело в переносе строк (test3 стоит последним, у него нет переноса строк)
PHP:
скопировать код в буфер обмена
  1. $t=file("test.txt") ;
  2. echo '<pre>';
  3. echo '</pre>';
Что выдает, есть переносы ?
7. virginkoks - 01 Июня, 2009 - 18:41:05 - перейти к сообщению
array (
0 => 'test1
',
1 => 'test2
',
2 => 'test3
',
3 => 'test4',
)

да переносы есть

чувствую разгадка близка..))
8. Stierus - 01 Июня, 2009 - 19:03:35 - перейти к сообщению
разгадка не близка, а у тебя на руках. У тебя 2 выбора: читать файл вручную построчно и заносить в массив сразу без переносов (предпочтительный вариант), либо после file(...) применять Trim (rtrim и тд) к каждому элементу массива
9. virginkoks - 01 Июня, 2009 - 19:06:29 - перейти к сообщению
огромное спасибо
отпустило

 

Powered by ExBB FM 1.0 RC1