Имеется массив в файле xxx.txt Код (Text): А1;1;ге;3;3;2 Б1;1;шп;3;2;3 В1;1;ул.;3;1;4 Г1;1;г/в;3;5;55 ..... Требуется выполнить поиск в массиве по (например третьему) элементу и вывести все элементы найденной строки в столбик. К сожалению не могу найти, где ошибка: Код (Text): $type = isset($_POST['type']) ? $_POST['type'] : ''; $fd = fopen('http://www.mysite.ru/xxx.txt', 'r'); $cb = array(); $clb= file("http://www.mysite.ru/xxx.txt"); $numstrok = count ($clb); for ($icb=0; $icb<$numstrok; $icb++) $row = explode( ";",$clb[$icb]) { { if($row[2] === $type){ $cb = $row; } } if(count($cb) > 0) { print "$cb[0]<br>cb[1]<br>cb[2]<br>cb[3]<br>cb[4]<br>cb[5]<br>"; // вывод элементов массива в найденной строке } выводит все строки, а надо только найденную.
fgetcsv - так берешь строку потом explode ее собираешь в массив и потом уже ищешь по третьему элементу
Надо выбрать что-то одно. Я бы тут не надеялся на пхп, как он там приведет типы, тем более что не особо нужно что бы данные были одного типа... Достаточно if($row[2] == $type)
А я не говорил, что это не правильно. Я говорю о том, что если нет надобности проверять еще и тип данных, то и не надо. А то пхп может сделать не так как надо. В данном случае, я согласен, будет работать правильно.
Ну, вообще, типы преобразуются как раз при ==. И тут теоретически может оказаться, что типы приведутся не так, как надо. А при === - сравниваются переменные как есть без преобразований каких-либо. Тесты (на винде, по крайней мере) - показывают, что === работает немного быстрее. Разница во времени выполнения операций сравнения зависит от сравниваемых переменных. Можешь сам погонять, если интересно. Например, такое: Код (PHP): <?php $a = 'a'; $b = 'b'; $start = microtime(true); for($i = 0; $i < 10000000; ++$i) $r = $a == $b; echo('"a"=="b": ' . round(microtime(true) - $start, 5) . '<br>'); $start = microtime(true); for($i = 0; $i < 10000000; ++$i) $r = $a === $b; echo('"a"==="b": ' . round(microtime(true) - $start, 5) . '<br>'); $a = '1'; $b = '2'; $start = microtime(true); for($i = 0; $i < 10000000; ++$i) $r = $a == $b; echo('"1"=="2": ' . round(microtime(true) - $start, 5) . '<br>'); $start = microtime(true); for($i = 0; $i < 10000000; ++$i) $r = $a === $b; echo('"1"==="2": ' . round(microtime(true) - $start, 5) . '<br>'); $a = 1; $b = 2; $start = microtime(true); for($i = 0; $i < 10000000; ++$i) $r = $a == $b; echo('1==2: ' . round(microtime(true) - $start, 5) . '<br>'); $start = microtime(true); for($i = 0; $i < 10000000; ++$i) $r = $a === $b; echo('1===2: ' . round(microtime(true) - $start, 5)); ?> Добавлено спустя 34 минуты 46 секунд: Хотя, конечно, сами по себе эти операции настолько быстрые, что смысла использовать ту или иную ради скорости выполнения - нет