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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как открыть и записать массив в файл

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
polly
Отправлено: 08 Сентября, 2010 - 11:44:41
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




привет всем

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

include ($file);
//файл с комментами, там массив называется tofil
unset ($tofil[1]);
//удаляет без проблем

$fw=fopen ($file, "w");
fwrite($fw, $tofil);
// проблемы с записью

fclose($fw);

в файл пишется слово Array... а мне нужно, чтобы было записано содержание массива. думала про compact или extract, но че-то не помогло.
что делаю не так? как записать в файл содержание массива?
 
 Top
garvey
Отправлено: 08 Сентября, 2010 - 12:10:31
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Циклом нужно пройтись по элементам массива(foreach удобней в этом случае).
 
 Top
biperch
Отправлено: 08 Сентября, 2010 - 15:56:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.  
  4. foreach($tofil as $key=>$value){
  5.  
  6.  
  7.  
  8. fwrite($fw, $value);
  9.  
  10. }
  11.  
  12.  
  13.  
  14.  

(Отредактировано автором: 08 Сентября, 2010 - 15:57:09)

 
 Top
polly
Отправлено: 08 Сентября, 2010 - 16:20:48
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




ребята, спасибо за идею

biperch, не прокатывает - там надо как-то хитро открывать файл - когда первый элемент массива, то w, когда все остальные - а.

шаманю дальше...
 
 Top
Nestor
Отправлено: 08 Сентября, 2010 - 16:32:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 220
Дата рег-ции: Март 2009  


Помог: 0 раз(а)






-----
Aurus CMS
 
 Top
polly
Отправлено: 09 Сентября, 2010 - 10:53:37
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Nestor, var_export, var_dump - это по ходу аналоги print_r, они не преобразовывают массив, а просто выводят, так что в файл в таком случае ничего не пишется...
шаманю дальше
 
 Top
polly
Отправлено: 09 Сентября, 2010 - 13:21:48
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




это АДЪ!!!

$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, если там легче...
 
 Top
ALEN
Отправлено: 09 Сентября, 2010 - 13:29:52
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




serialize крутая штука)))
 
 Top
polly
Отправлено: 09 Сентября, 2010 - 13:32:54
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




сериалайз упаковывает, я потом из файла читаю всякий бред (дополнительные цифорки там и все такое))
 
 Top
ALEN
Отправлено: 09 Сентября, 2010 - 13:35:33
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




$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 самый идеальный вариант
(Добавление)
А еще всегда нужно правильно работать с кодировками
 
 Top
polly
Отправлено: 09 Сентября, 2010 - 13:47:57
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




а еще можно не кичиться прямотой своих рук перед блондинкой, которая села писать движок с нуля и ваще не программер ни разу, чего в принципе не скрываю.
 
 Top
ALEN
Отправлено: 09 Сентября, 2010 - 13:51:45
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Тогда извини))) Только не сдавай, что serialize не подходит )))
 
 Top
polly
Отправлено: 09 Сентября, 2010 - 13:56:58
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




ок) ааа... то есть тот код ты написал в надежде, что его разбирать никто не будет, а если и будет, то мозг взорвется??)))) XD
 
 Top
ALEN
Отправлено: 09 Сентября, 2010 - 14:05:59
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Нет там готовые элементы:

$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);
 
 Top
polly
Отправлено: 09 Сентября, 2010 - 14:24:42
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




я, конечно, попробовала, но пока оставлю свой адъцкий вариант);)
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB