|
|
|
|
|
для: Valick
(17.01.2014 в 14:32)
| | > в этом нет смысла
если конечно файл не 100 гигов....
А, не, пардон.
Не досмотрел, что вся обработка происходит уже после чтения.
Так конечно да. | |
|
|
|
|
|
|
|
для: azEsm
(17.01.2014 в 13:07)
| | 1) Вы читаете файл целиком в массив, в этом нет смысла применять fgets
проще как сказал confirm использовать file()
2) я так понимаю файл не ваш, и у вас нет возможности структурировать его более детально без всяких пустых строк и тд.
Покажите кусок файла с реальными данными
По хорошему конечно читать файл посимвольно | |
|
|
|
|
|
|
|
для: azEsm
(17.01.2014 в 13:07)
| | Начните с file(), это сразу вернет массив, а fopen тут не нужна.
Explode в любом случае вернет массив, и если ожидается, что по разбиению должно быть два элемента в нем, то нужно проверять количество элементов, а не "пустоту". ПО условию проверки принимать действия. Если необходимо удаление пустых элементов, то их надо просто удалять, без всяких if(!empty($a[1]) и прочего. | |
|
|
|
|
|
|
|
для: Valick
(17.01.2014 в 12:48)
| | Вообще, она берётся из файла, в котором записаны параметры в виде
a=b
d=j
d=y
и т.п. Это я всё уже сделал, осталось проверку на пустые строки делать. Вот вся функция целиком:
function readprop($filename)
{
$handler = fopen($filename, "r");
while(!feof($handler))
{
$array[]=fgets($handler);
}
for($i=0; $i<count($array); $i++)
{
$a = explode("=", $array[$i]);
if(!empty($a[1]) && $a[0]{0}!="#")
{
$data[$a[0]]=$a[1];
}
}
return $data;
}
|
if(!empty($a[1]) && $a[0]{0}!="#") проверяет, не закомментирована ли строка и заполнена ли она. Но проверяет по второму элементу, а желательно проверять первый элемент. Если сделать if(!empty($a[0])), то даже если строка пустая, она всё равно пишется в $data в виде "[]=>". | |
|
|
|
|
|
|
|
для: azEsm
(17.01.2014 в 12:43)
| | а мне уже жутко желательно чтобы вы ответили на мой вопрос в моем первом посте:
"откуда берется эта строка и почему она именно в таком виде"
Я же должен хотя бы смутно представлять что вы там вообще творите.
От этого зависит качество и оперативность оптимально правильного ответа. | |
|
|
|
|
|
|
|
для: azEsm
(17.01.2014 в 12:43)
| | Проверять что и после чего? | |
|
|
|
|
|
|
|
для: Valick
(17.01.2014 в 12:35)
| | Это понятно, просто когда проверяю по a[0] , то даже если она пустая ($array[$i] вообще пустая строка), выражение всё равно выполняется, а если проверяю по a[1], то не выполняется, работает, как задумано.
Но мне крайне желательно проверять именно по a[0]. | |
|
|
|
|
|
|
|
для: azEsm
(17.01.2014 в 12:01)
| | если там ноль или пусто, то это empty
___
вы упорно не хотите отвечать на мой вопрос, а зря | |
|
|
|
|
|
|
|
для: Valick
(17.01.2014 в 10:52)
| | А не в курсе, случаем, почему такая проверка не работает
$a = explode("=", $array[$i]);
if(!empty($a[0]))
{
$data[$a[0]]=$a[1];
}
а работает только if(!empty($a[1]))? Даже если строка пустая, всё равно в первом случае в массив пишется "[]=>" | |
|
|
|
|
|
|
|
для: Valick
(17.01.2014 в 10:52)
| | Спасибо! Это как раз то, что нужно. Затупорылил :)
Только там $arr[$e[0]=$e[1]; | |
|
|
|
|