Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как передать код массива...


Автор: y.s.grin 5.3.2003, 15:34
Суть проблеммы такова:
есть файл содержащий масив, содержащийся в файле blabla.php

$blablabla[0]["name"] = "blablabla";
$blablabla[0]["ip"] = "blablabla";
$blablabla[0]["time"] = "blablabla";
$blablabla[1]["name"] = "blablabla";
$blablabla[1]["ip"] = "blablabla";
$blablabla[1]["time"] = "blablabla";

Моя задача взять этот массив и присобачить к нему следующий раздел

$blablabla[2]["name"] = "blablabla";
$blablabla[2]["ip"] = "blablabla";
$blablabla[2]["time"] = "blablabla";

Как я это делаю я считываю массив потом считаю кол-во эл-тов (count($blablabla)) и создаю новый массив

$blablabla[2]["name"] = "blablabla";
$blablabla[2]["ip"] = "blablabla";
$blablabla[2]["time"] = "blablabla";

Потом сливаю оба массива (array_merge) и получаю массив $blablabla, содержащий три эл-та:

$blablabla[0]["name"] = "blablabla";
$blablabla[0]["ip"] = "blablabla";
$blablabla[0]["time"] = "blablabla";
$blablabla[1]["name"] = "blablabla";
$blablabla[1]["ip"] = "blablabla";
$blablabla[1]["time"] = "blablabla";
$blablabla[2]["name"] = "blablabla";
$blablabla[2]["ip"] = "blablabla";
$blablabla[2]["time"] = "blablabla";

В принципе своей цели я добился, но вот вопрос. Как записать текст (т.е. php-код) этого массива в файл blabla.php? fwrite'ом
Возможно ли это как-то обойти?

Автор: Cepera 5.3.2003, 16:19
писать его также как и обычнй текстовый файл:
Код

$outhandle=fopen ("blabla.php","w");
fputs($outhandle,$buffer);
fclose($outhandle);

Автор: y.s.grin 5.3.2003, 18:01
Как записать я знаю. Но вот проблемма - если записывать переменную $blablabla, т.е. мой конечный массив, то будет записываться "Array", а мне нужно записать код этого массива, то есть:

$blablabla[0]["name"] = "blablabla";
$blablabla[0]["ip"] = "blablabla";
$blablabla[0]["time"] = "blablabla";
$blablabla[1]["name"] = "blablabla";
$blablabla[1]["ip"] = "blablabla";
$blablabla[1]["time"] = "blablabla";
$blablabla[2]["name"] = "blablabla";
$blablabla[2]["ip"] = "blablabla";
$blablabla[2]["time"] = "blablabla";

(мой конечный массив)

Автор: y.s.grin 5.3.2003, 20:18
Всё, нашёл решение проблеммы. Если кому интересно, то читайте. Есть функция var_export, которая возвращает код массива по виду :
array (
0 =>
array (
'text' => 'text',
),
1 =>
array (
'text' => 'text',
),
)

Ну и вот код того, что у меня получилось.

Код
$newscontent = "newsbody.php";
 if (file_exists("$newscontent"))
    {
     include("$newscontent");
    }
 if (!isset($news))
    {
     $news = array();
    }
$counter = count($news);
$ider = "$counter + 1";  
$addnews[$counter]["id"] = "$ider";
$addnews[$counter]["name"] = "$nameer";
$addnews[$counter]["date"] = "$dateer";
$addnews[$counter]["content"] = "$contenter";
$addnews[$counter]["link"] = "$linker";

$news = array_merge($news, $addnews);
$news = "\$news = ".var_export($news, "string");

$fp=fopen ("newsbody.php","w");
fputs($fp, "<?php\n");
fputs($fp, $news);
fputs($fp, "\n");
fputs($fp, "?>");
fclose($fp);


$nameer, $dateer, $contenter и $linker приходят из формы.

Автор: y.s.grin 5.3.2003, 20:19
Тему можно закрывать smile.gif

Автор: Cepera 6.3.2003, 20:09
ок smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)