Владимир55
13.06.2017 - 21:17
Массив был сохранен вот таким образом:
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
13.06.2017 - 22:39
А где у тебя преобразование в массив? Я вот вижу только то, что ты записал в текстовую строку содержимое файла
Читай тут:
http://php.net/manual/ru/function.eval.php, но будь осторожен с использованием этой функции. Её можно использовать только тогда, когда ты уверен в надежности источника данных.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
walerus
13.06.2017 - 22:49
Владимир55file_put_contents('m_fraz.txt', serialize(($m_fraz) );
...
$m_control = unserialize(file_get_contents("m_fraz.txt"));
sergeiss
13.06.2017 - 23:03
walerus, ну так у него ж уже записаны файлы...
А вообще, я бы советовал хранить в формате json, если уж приходится что-то хранить в файлах. Более читаемо, да и в случае необходимости можно без преобразований отправить в браузер, в JS.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Достаточно посмотреть официальную доку на print_r (https://secure.php.net/manual/ru/function.print-r.php) там есть функция print_r_reverse() в комментах.
walerus
13.06.2017 - 23:55
sergeissТочно!, я чет невнимательно прочел пост, извините простите
По теме, можно попробовать что говорит
Ron или я бы регулярку задействовал построчно.
Игорь_Vasinsky
14.06.2017 - 06:30
<?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
Если нужно хранить массив, то почему не использовать var_export?
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Игорь_Vasinsky
14.06.2017 - 14:30
да ну - 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
Игорь_Vasinsky, тоже как вариант. Вариантов уйма, ТС почему-то выбрал вариант со вставкой палки в колесо.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Владимир55
14.06.2017 - 15:07
Цитата (chee @ 14.06.2017 - 10:58) |
Игорь_Vasinsky ТС почему-то выбрал вариант со вставкой палки в колесо. |
Как я сказал изначально, файл мне достался готовым, так что выбирать было нечего.
Владимир55, ну таки скажи тому кто готовит этот файл, что он петрушка и пусть выдает нормальный формат на выход. Если же ты интегрируешься с каким-то сервисом и нет способа повлиять на формат, то это печально.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Согласен, решать проблему нужно по возможности там, где она появляется. Иначе ее последствия могут далеко зайти. Кстати, если это действительно интеграция, то настоятельно рекомендую воспользоваться функцией print_r_reverse, так как она умеет обрабатывать многомерные массивы. Владимир55, всегда в таких ситуациях (парсинг внешних данных), старайтесь пользоваться максимально универсальными решениями.
Формат JSON сегодня является, можно сказать, "золотым стандартом", для представления структурированных данных в виде строки (текста).
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.