Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Аналог фукции для записи в файл
 
 автор: stasmus   (25.10.2007 в 16:47)   письмо автору
 
 

есть функция. Как сделать аналогичную но, записывать в файл

function f()
{
    $dt=func_get_args();
    foreach ($dt as $one)
    {
        echo "<pre>";print_r($one);echo "</pre>";
    }
}

   
 
 автор: mihdan   (25.10.2007 в 17:49)   письмо автору
 
   для: stasmus   (25.10.2007 в 16:47)
 


<?
function f()
{
    
$dt=func_get_args();
    foreach (
$dt as $one)
    {
        
$fp fopen($one'a+');
    }
}
?>

   
 
 автор: kasmanaft   (25.10.2007 в 17:56)   письмо автору
 
   для: mihdan   (25.10.2007 в 17:49)
 

Наверное

<? 
function f()
{
    
$name 'file.txt';
    
$dt=func_get_args();
    
$fp fopen($name'a+');
    foreach (
$dt as $one)
    {
         
fputs($fp$one); // может быть $one."\r\n"
    
}
    
fclose($fp);
}
?>

   
 
 автор: stasmus   (25.10.2007 в 19:31)   письмо автору
 
   для: kasmanaft   (25.10.2007 в 17:56)
 

нет, не выйдет, в общем случае массив имеет n-мерную вложенность, а fwrite fputs работают со строками

   
 
 автор: mihdan   (25.10.2007 в 19:38)   письмо автору
 
   для: stasmus   (25.10.2007 в 19:31)
 

а подробнее мона

   
 
 автор: stasmus   (25.10.2007 в 19:59)   письмо автору
 
   для: mihdan   (25.10.2007 в 19:38)
 

мона. Эта функция отладочная - должна выводить список всех переменных передаваемых ей. Каждая переменная может быть какой угодно вложенности. например

$g='string2';
$h=12305;
$f=array($g,'info'=>$h);
$e=array(1,8);
$b=array(&$e,'name'=>&$f);
$d='string';
$c=1;
$a=array(&$b,'data'=>$c,$d);


нужно в файл записать то же самое чтоо и пры вызове функции

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 1
                    [1] => 8
                )

            [name] => Array
                (
                    [0] => string2
                    [info] => 12305
                )

        )

    [data] => 1
    [1] => string
)

   
 
 автор: Drago   (25.10.2007 в 20:22)   письмо автору
 
   для: stasmus   (25.10.2007 в 19:59)
 


<?
function f() 

    
ob_start();

    
$dt=func_get_args(); 
    foreach (
$dt as $one
    { 
       
print_r($one);
    } 

    
$bufer ob_get_contents();
    
ob_end_clean();

    
$fp fopen("file.log""w");
    
fwrite($fp$buffer);
    
fclose($fp);
}
?>

   
 
 автор: stasmus   (25.10.2007 в 20:36)   письмо автору
 
   для: Drago   (25.10.2007 в 20:22)
 

здорово. Хороршее решение!

   
 
 автор: Unkind   (25.10.2007 в 21:42)   письмо автору
 
   для: stasmus   (25.10.2007 в 20:36)
 

А зачем Вам это? Лучше serialize() для нормальных ситуаций.

   
 
 автор: stasmus   (25.10.2007 в 22:06)   письмо автору
 
   для: Unkind   (25.10.2007 в 21:42)
 

не разу не применял serialize на практике. Зачем? что дает?

   
 
 автор: bronenos   (25.10.2007 в 22:56)   письмо автору
 
   для: stasmus   (25.10.2007 в 22:06)
 

упаковка массива или объекта в строку

   
 
 автор: Unkind   (25.10.2007 в 23:01)   письмо автору
 
   для: stasmus   (25.10.2007 в 22:06)
 

> не разу не применял serialize на практике. Зачем? что дает?
Любое значение (integer, string, array, ...) можно представить в виде строки. Потом можно, естественно, получить это значение обратно.

   
 
 автор: stasmus   (25.10.2007 в 23:12)   письмо автору
 
   для: Unkind   (25.10.2007 в 23:01)
 

ага, ясно, но наверно использовать очень удобно при отладке сложной системы в течении длит времени, но мне была необходима отладка в онлайн-режиме, унсериалайз неудобен. с ОБ интересней решение, но неуместно видимо если возникнет ситуация ОБ в ОБ...

   
 
 автор: Unkind   (25.10.2007 в 23:21)   письмо автору
 
   для: stasmus   (25.10.2007 в 23:12)
 

Не, serialize() не для отладки. Если Вы проводите отладку, то удобнее использовать var_export():

<?php
$array 
= array('key' => 'value''value');
$result var_export($arraytrue);

echo 
$result;

//Значение $result можно сохранить в тот же файл
?>


> с ОБ интересней решение
output_buffering - буферизация вывода

> но неуместно видимо если возникнет ситуация ОБ в ОБ
Полезно читать мануал (http://php.net/ob_start):

Output buffers are stackable, that is, you may call ob_start() while another ob_start() is active. Just make sure that you call ob_end_flush() the appropriate number of times. If multiple output callback functions are active, output is being filtered sequentially through each of them in nesting order.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования