Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для Fatmarmelad
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613

Почему file_put_contents не записывает массив?

10.11.2021, 23:23. Показов 2600. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый!
Почему получаю ошибку при записи в файл массива file_put_contents?
Строку записывает, массив-нет , получаю ошибку.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2021, 23:23
Ответы с готовыми решениями:

Почему ничего не записывает в массив?
Вот код: for(int j = 0; j < targetInventory.TypeItems.Count; j++) { string TypeItemPref = "TypeItem-" +...

Почему не записывает в файл
Вопрос почему не записывает в файл var T:TextFile; begin Assignfile(T,'C:\Student.txt'); rewrite(T); write(T,'Hello'); ...

Почему не записывает в файл ?
procedure TForm1.Button1Click(Sender: TObject); const Fn1='file1.txt'; Fn2='file2.txt'; var f1,f2:TextFile; nmb:Integer; ...

15
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
11.11.2021, 02:01
Какую ошибку-то?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
11.11.2021, 06:16
Fatmarmelad, потому что массив сначала нужно преобразовать в строку. Одномерный массив можно преобразовать так:
PHP
1
$content = implode(PHP_EOL, $array);
$content потом передавайте в file_put_contents.
0
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
11.11.2021, 06:58
Para bellum, ничего не надо преобразовывать. Согласно документации:

Также вы можете передать одномерный массив в качестве параметра data. Это будет эквивалентно вызову file_put_contents($filename, implode('', $array)).
и это прекрасно работает

PHP
1
2
$m = [1, 2, 3, 4, 5];
file_put_contents("massiv.txt", $m); // => 12345
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
11.11.2021, 07:00
KingdaKa, да, точно. Забыл об этой особенности.
0
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
11.11.2021, 07:18
Так что ждем текст ошибки Народ че-то постоянно думает, что тут ванги собрались
0
100 / 70 / 26
Регистрация: 19.12.2014
Сообщений: 332
11.11.2021, 14:55
Можно пованговать что массив многомерный.
1
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
11.11.2021, 15:21
Да, тогда будет "Warning: Array to string conversion in ..."
1
 Аватар для Fatmarmelad
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613
11.11.2021, 19:28  [ТС]
массив действительно многомерный.
PHP notice: array to string conversion
0
100 / 70 / 26
Регистрация: 19.12.2014
Сообщений: 332
11.11.2021, 19:30
Значит нужно вручную делать implode рекурсивно.
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
11.11.2021, 19:31
Fatmarmelad, ну естественно всё. Обходите массив рекурсивно и каждый уровень преобразуйте в строку, пока массив не станет хотя бы одномерным.

Чуть опоздал.
1
 Аватар для Fatmarmelad
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613
11.11.2021, 21:25  [ТС]
По ходу родился вопрос. Есть ли функция , которой можно в файл записать массив без преобразования в строку?
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
11.11.2021, 21:43
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
массив без преобразования в строку?
Совсем без - нет.
PHP
1
file_put_contents("file.txt", serialize($arr));
А потом

PHP
1
$arr = unserialize(file_get_contents("file.txt"));
0
Невнимательный
 Аватар для ft4l
2840 / 1266 / 358
Регистрация: 08.02.2013
Сообщений: 7,359
Записей в блоге: 2
11.11.2021, 21:56
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
Есть ли функция
yaml_emit_file() но расширение не всегда включено/присутствует.
И не знаю преобразует-ти оно все записываемые из памяти данные в строк в той же памяти,
или как-то по кускам это делается

var_export(), print_r(), var_dump(), debug_zval_dump() тоже сразу в STDOUT могут записывать,
по идее это тоже файлолвый дескриптор )

Не по теме:

Добавлено через 9 минут

Цитата Сообщение от Fatmarmelad Посмотреть сообщение
без преобразования в строку
fputcsv()
запись построчно преобразуя аналогичные одномерные массивы элементы массива
Но с такимм простыми массивами можно и implode(), pack() , ...

0
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
12.11.2021, 10:10
Раз уж мы говорим о строках, то почему бы и не сжать сразу? После серилизации.

PHP
1
2
3
$data = "Сожми меня, сожми меня быстро!";
$gz = gzencode($data, 9);
file_put_contents("szhataya.txt.gz", $gz);
0
100 / 70 / 26
Регистрация: 19.12.2014
Сообщений: 332
14.11.2021, 14:16
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
По ходу родился вопрос. Есть ли функция , которой можно в файл записать массив без преобразования в строку?
Да эта "функция" содержит всего одну строку:
PHP
1
2
3
function array2str($array) {
    return implode('', array_map(function($item) { return is_array($item) ? array2str($item) : $item; }, $array));
}
Другой вопрос: точно ли она нужна? Я ни разу в своей практике не сталкивался с тем, что нужно многомерный массив "слепить" в одну строку - всегда нужно какое-то форматирование.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2021, 14:16
Помогаю со студенческими работами здесь

Почему не записывает данные ?
Всем доброго времени суток есть проблема скрипт не записывает в базу не чего <?php session_start(); $conten =...

Почему в name1 ничего не записывает?
Товарищи, помогите. Пожалуйста.:wall: Дан список группы в 10 человек в виде ФАМИЛИЯ ИМЯ ОТЧЕСТВО 20 символов 10...

Почему StreamWriter не все записывает?
Здравствуйте. Есть код, который "обходит" все файлы и директории и пути к ним записывает в файл Но почему то записывается фиксированное...

Почему читает и записывает в разные каталоги?
Доброго времени суток уважаемые форумчане) Собственно пытаюсь написать программу по работе с xml. для синтаксического анализа xml файла...

Почему в xml записывает одной строкой
Всем привет. Есть у меня код, который создает xml. Так вот. Изначально пример создавал красивый, структурированный файл, с отступами, все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru