привет всем
пишу комментарии к сообщению в один файл, каждый коммент - элемент массива (там имя, сообщение, имэйл), хочу удалять из админки комменты поштучно, но ничего не получается
include ($file);
//файл с комментами, там массив называется tofil
unset ($tofil[1]);
//удаляет без проблем
$fw=fopen ($file, "w");
fwrite($fw, $tofil);
// проблемы с записью
fclose($fw);
в файл пишется слово Array... а мне нужно, чтобы было записано содержание массива. думала про compact или extract, но че-то не помогло.
что делаю не так? как записать в файл содержание массива?
Циклом нужно пройтись по элементам массива(foreach удобней в этом случае).
ребята, спасибо за идею
biperch, не прокатывает - там надо как-то хитро открывать файл - когда первый элемент массива, то w, когда все остальные - а.
шаманю дальше...
Nestor, var_export, var_dump - это по ходу аналоги print_r, они не преобразовывают массив, а просто выводят, так что в файл в таком случае ничего не пишется...
шаманю дальше
это АДЪ!!!
$all=count($tofil);
if ($nomer==0)
{
if ($all==0)
{
$fw=fopen ($file, "w");
fwrite($fw, '');
}
foreach ($tofil as $key => $value)
{
if ($key==1)
{
$fw=fopen ($file, "w");
fwrite($fw, '<?php $tofil[]="'.$value.'";?>');
}
else
{
$fw=fopen ($file, "a");
fwrite($fw, '<?php $tofil[]="'.$value.'";?>');
}
}
}
else{
foreach ($tofil as $key => $value)
{
if ($key==0)
{
$fw=fopen ($file, "w");
fwrite($fw, '<?php $tofil[]="'.$value.'";?>');
}
else
{
$fw=fopen ($file, "a");
fwrite($fw, '<?php $tofil[]="'.$value.'";?>');
}
}
}
зато работает)
мда... массивы в пхп - это явно не для слабонервных, в пору прикручивать mysql, если там легче...
serialize крутая штука)))
сериалайз упаковывает, я потом из файла читаю всякий бред (дополнительные цифорки там и все такое))
$array=unserialize(base64_decode(implode("",file($file))));
$textarray=base64_encode(serialize($array));
fopen($file,"a+");
flock($f,LOCK_EX);
ftruncate($f, 0);
fwrite($f,$textarray);
fflush($f);
flock($f,LOCK_UN);
fclose($f);
(Добавление)
Прямые руки исправляют все проблемы, а serialize самый идеальный вариант
(Добавление)
А еще всегда нужно правильно работать с кодировками
а еще можно не кичиться прямотой своих рук перед блондинкой, которая села писать движок с нуля и ваще не программер ни разу, чего в принципе не скрываю.
Тогда извини))) Только не сдавай, что serialize не подходит )))
ок) ааа... то есть тот код ты написал в надежде, что его разбирать никто не будет, а если и будет, то мозг взорвется??)))) XD
Нет там готовые элементы:
$array=unserialize(base64_decode(implode("",file($file))));
тут читаем наш файл $file , раскодируем его с помощью base64_decode и разбираем его как закодированный unserialize
далее нам нужно записать его в файл:
$textarray=base64_encode(serialize($array));
тут кодируем наш массив $array с помощью serialize , далее полученую строку кодируем с помощью base64_encode для не читаемого вида, который позволит избежать некоторых плохих моментов.
ниже банальный код записи в файл, который можно найти в любом учебнике
fopen($file,"a+");
flock($f,LOCK_EX);
ftruncate($f, 0);
fwrite($f,$textarray);
fflush($f);
flock($f,LOCK_UN);
fclose($f);
я, конечно, попробовала, но пока оставлю свой адъцкий вариант);)