2016-01-18 4 views
2

Я просто пытаюсь понять, как использовать fwrite. В приведенном ниже коде я пытаюсь сохранить вывод в текстовом файле. Я просто получаю пустой текстовый файл. Может кто-нибудь пожалуйста, скажите мне, что я делаю неправильно здесьСохранить переменную, используя fwrite

<?php 
    $name = fix_name("ALAN", "james", "LiM"); 
    echo $name[0] . " " . $name[1] . " " . $name[2]; 
    function fix_name($n1, $n2, $n3) { 
     $n1 = ucfirst(strtolower($n1)); 
     $n2 = ucfirst(strtolower($n2)); 
     $n3 = ucfirst(strtolower($n3)); 

     return array($n1, $n2, $n3); 

} 
    $fp = fopen("name.txt", "wb"); 
    $written = fwrite($fp, $name); 
    fclose($fp); 

?> 
+1

Вы не можете писать массивы в файл. Вам нужно использовать 'serialize()', если вы хотите сохранить массив. Не забудьте «unserialize()» после чтения файла. Вы можете использовать функцию чтения и записи файлов PHP5. 'file_get_contents()' 'file_put_contents()' –

+0

Спасибо. Я проверю это. –

ответ

1

Вы пропускании array к fwrite.
Если включить отчеты об ошибках с

error_reporting(E_ALL); 

Вы получите предупреждение о том,

Предупреждение: FWRITE() ожидает параметр 2 будет строка, массив приведен в file.php на линии 16

Либо возвращает строку из вашей функции

return $n1 . ', ' . $n2 . ', ' . $n3; 

Или вне функции, используйте implode, чтобы получить строку из элементов массива

$name = implode(', ',fix_name("ALAN", "james", "LiM")); 

Кроме того, за пределами функции, распечатать только $name переменной

print $name; 

В текстовом файле вы будет иметь это

Alan, James, Lim 
Смежные вопросы