[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не удается воспроизвести массив из файла
Владимир55
Массив был сохранен вот таким образом:
file_put_contents('m_fraz.txt', print_r($m_fraz, true));

(Возможно, что это не оптимальный способ, но теперь уже ничего не изменить - есть только такой файл)


Открываю этот файл и получаю массив
$m_control = file_get_contents("m_fraz.txt");

echo '<pre>';
print_r($m_control);
echo '</pre>';


Но массив какой-то странный: функция count($m_control) дает единицу, а функция
	foreach($m_control as $key => $val)  echo ("<br /> $key  $val ");

вообще ничего не выводит!

В чем тут дело и как получить нормальный массив?

=======
Если посмотреть файл текстовым редактором, то он такой:
Цитата
Array
(
    [0] => 4 типа сотрудников
    [1] => компании
    [2] => продажи
    [3] => b2b рынок
)
sergeiss
А где у тебя преобразование в массив? Я вот вижу только то, что ты записал в текстовую строку содержимое файла smile.gif

Читай тут: http://php.net/manual/ru/function.eval.php, но будь осторожен с использованием этой функции. Её можно использовать только тогда, когда ты уверен в надежности источника данных.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
walerus
Владимир55
file_put_contents('m_fraz.txt', serialize(($m_fraz) );
...

$m_control = unserialize(file_get_contents("m_fraz.txt"));
sergeiss
walerus, ну так у него ж уже записаны файлы...

А вообще, я бы советовал хранить в формате json, если уж приходится что-то хранить в файлах. Более читаемо, да и в случае необходимости можно без преобразований отправить в браузер, в JS.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Ron
Достаточно посмотреть официальную доку на print_r (https://secure.php.net/manual/ru/function.print-r.php) там есть функция print_r_reverse() в комментах.
walerus
sergeiss
Точно!, я чет невнимательно прочел пост, извините простите unsure.gif

По теме, можно попробовать что говорит Ron или я бы регулярку задействовал построчно.
Игорь_Vasinsky
<?php

$str = '
Array
(
[0] => 4 типа сотрудников
[1] => компании
[2] => продажи
[3] => b2b рынок
)
'
;

preg_match_all("#\[(.)\] => (.*).".PHP_EOL."#", $str, $matches);

echo '<pre>' . print_r($matches[2], 1) . '</pre>';


<pre>Array
(
[0] => 4 типа сотрудников
[1] => компании
[2] => продажи
[3] => b2b рынок
)
</pre>


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
chee
Если нужно хранить массив, то почему не использовать var_export?

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Игорь_Vasinsky
да ну - json - наше все

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
chee
Игорь_Vasinsky, тоже как вариант. Вариантов уйма, ТС почему-то выбрал вариант со вставкой палки в колесо.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Владимир55
Цитата (chee @ 14.06.2017 - 10:58)
Игорь_Vasinsky ТС почему-то выбрал вариант со вставкой палки в колесо.

Как я сказал изначально, файл мне достался готовым, так что выбирать было нечего.
chee
Владимир55, ну таки скажи тому кто готовит этот файл, что он петрушка и пусть выдает нормальный формат на выход. Если же ты интегрируешься с каким-то сервисом и нет способа повлиять на формат, то это печально.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Ron
Согласен, решать проблему нужно по возможности там, где она появляется. Иначе ее последствия могут далеко зайти. Кстати, если это действительно интеграция, то настоятельно рекомендую воспользоваться функцией print_r_reverse, так как она умеет обрабатывать многомерные массивы. Владимир55, всегда в таких ситуациях (парсинг внешних данных), старайтесь пользоваться максимально универсальными решениями.

Формат JSON сегодня является, можно сказать, "золотым стандартом", для представления структурированных данных в виде строки (текста).

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.