Прошу подсказать, что делать, если строка (поле) для сравнения в асс.массиве слишком длинная. Работает: $dohod = "Доходные вложения в материальные ценности"; foreach($data->$bbalans->$activ->$vneob->$dohod as $year =>$summa){echo '$summa';} Не работает: $nalog = "Налог на добавленную стоимость по приобретенным ценностям"; foreach($data->$bbalans->$activ->$vneob->$nalog as $year =>$summa){echo '$summa';} Warning: Invalid argument supplied for foreach() Поля приходят в JSONе (кириллические и длинные) и их я изменять не могу). Вопрос: как проверять лишь начало строки на первые 40 символов?
для работы с josn есть опупительный класс JSONQ "PHP JSON Query: Query JSON data to find and extract information"
спасибо, посмотрю... а все таки, есть же какие то средства работы со строками, чтобы проверять на первые 40 символов...? рег. выражения и проч...
ммм а с чего ты решил что она слишком длинная? Ошибка говорит, что ты пытаешься обратиться к недействительному аргументу. Ты просто возможно где-то ошибся в имени Но скорей всего ты не соблюдаешь иерархию, ибо с каких пор ндс по ценностям относят к внеоборотным активам?
а все легко проверить... вот ОЫЩТ и в нем все видно... и иерархию и ценности, щас проверим: "[data] => stdClass Object ( [Бухгалтерский баланс] => stdClass Object ( [Актив] => stdClass Object ( [I. ВНЕОБОРОТНЫЕ АКТИВЫ] => stdClass Object ( [Нематериальные активы] => stdClass Object ( [2015] => 101459000 [2014] => 12866000 [2013] => 3650000 [2012] => 4250000 [2011] => 956238990000 ) [Основные средства] => stdClass Object ( [2015] => 1084316376000 [2014] => 1063007530000 [2013] => 1003457628000 [2012] => 973476843000 [2011] => 956238990000 ) [Доходные вложения в материальные ценности] => stdClass Object ( [2015] => 0 [2014] => 0 [2013] => 0 [2012] => 0 [2011] => 0 ) [Финансовые вложения] => stdClass Object ( [2015] => 55174000 [2014] => 55174000 [2013] => 37157000 [2012] => 14562000 [2011] => 885000 ) [Отложенные налоговые активы] => stdClass Object ( [2015] => 1124245000 [2014] => 1074915000 [2013] => 936948000 [2012] => 812136000 [2011] => 584255000 ) [Прочие внеоборотные активы] => stdClass Object ( [2015] => 300133000 [2014] => 431445000 [2013] => 195277886000 [2012] => 110015536000 [2011] => 36774957000 ) [ИТОГО по разделу I] => stdClass Object ( [2015] => 1501878230000 [2014] => 1386703749000 [2013] => 1199713269000 [2012] => 1084323327000 [2011] => 993603963000 ) ) [II. ОБОРОТНЫЕ АКТИВЫ] => stdClass Object ( [Запасы] => stdClass Object ( [2015] => 3030699000 [2014] => 2831232000 [2013] => 2590596000 [2012] => 1483739000 [2011] => 1192448000 ) [Налог на добавленную стоимость по приобретенным ценностям] " Точно! Поторопился ночью и забежал вперед. вот правильная иеархия: foreach($data->$bbalans->$activ->$oborot->$nalog as $year =>$summa) Спасибо большое за подсказку!!! А то бы щас со строками возился...
PHP: echo implode ( '<br>', $data->$bbalans->$activ->$oborot->$nalog ); --- Добавлено --- интересно что быстрее foreach(values) or implode(values)