Как получить value из массива

249
04 апреля 2018, 09:00

На выходе получаю массив в формате:

[extra_fields] => [{"id":"19","value":"3"},{"id":"1","value":"\"Drauber\" \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u0441\u0442\u0430\u043b\u044c"},{"id":"37","value":"3"},{"id":"36","value":"4"},{"id":"35","value":"17"},{"id":"12","value":"\u0411\u043b\u043e\u043a \u0433\u0430\u0437\u043e\u0441\u0438\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439 600x200x200 D600"},{"id":"2","value":"2650 \u0440\u0443\u0431. \u043c\u00b3
68.41"},{"id":"3","value":"
\u0420\u0430\u0437\u043c\u0435\u0440\u044b 600x200x200 D600 B 3,5 F- 100 \u0413\u041e\u0421\u0422 1360-2007, \u0413\u041e\u0421\u0422 31359-2007, \u0413\u041e\u0421\u0422 30247.1-94.<\/p>"},{"id":"4","value":""},{"id":"13","value":"600"},{"id":"14","value":"200"},{"id":"15","value":"200"},{"id":"5","value":""},{"id":"6","value":"B 3.5 B 5.0"},{"id":"7","value":"F100"},{"id":"8","value":"0.14"},{"id":"16","value":"0.15"},{"id":"17","value":"0.3"},{"id":"10","value":""},{"id":"9","value":"1.8"},{"id":"18","value":"28.8"},{"id":"11","value":""}]

Как получить значение только:

{"id":"2","value":"2650 \u0440\u0443\u0431. \u043c\u00b3
    68.41"}

Код цикла:

<?php foreach($this->items as $item): ?>
        <!-- Start K2 Item Layout -->
        <div class="itemContainer">
            <div class="catItemView groupLeading">
                <a href="<?php echo $item->link; ?>" class="catItemView-link">
                    <div class="catItemImageBlock">
                          <span class="catItemImage">
                                <img src="<?php echo $item->imageGeneric; ?>" alt="<?php if(!empty($item->image_caption)) echo K2HelperUtilities::cleanHtml($item->image_caption); else echo K2HelperUtilities::cleanHtml($item->title); ?>" style="width:<?php echo $item->params->get('itemImageGeneric'); ?>px; height:auto;" />
                          </span>
                      </div>    
                    <div class="catItemHeader">
                        <!-- Item title -->
                        <h3 class="catItemTitle">
                        <?php echo $item->title; ?>     
                        </h3>
                    </div>
                    <div class="catItemManufacturer">
                        123
                        <pre style="display: none;">
                            <?
                                print_r($item);
                            ?>
                        </pre>
                    </div>  
                    <div class="catItemPrice">
                        <span class="price"> <?php echo $extrafields[2];?> руб./шт.</span>  
                    </div>
                    <div class="item-description">
                        <a class="catItemView-link" href="<?php echo $item->link; ?>"></a>
                        <a class="btn btn-order-item btn-link-wn" data-price="" data-name="<?php echo $item->title; ?>  " href="#order-wn">Купить</a>   
                    </div>  
                    <div class="clr"></div>                                     
                </a>
            </div>
        </div>
        <!-- End K2 Item Layout -->
        <?php endforeach; ?>

$item - содержит массив:

    stdClass Object
(
    [id] => 101
    [title] => 
    [alias] => 
    [catid] => 2
    [published] => 1
    [introtext] => 
    [fulltext] => 
    [video] => 
    [gallery] => 
    [extra_fields] => [{"id":"19","value":"3"},{"id":"1","value":"\"Drauber\" \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u0441\u0442\u0430\u043b\u044c"},{"id":"37","value":"3"},{"id":"36","value":"4"},{"id":"35","value":"17"},{"id":"12","value":"\u0411\u043b\u043e\u043a \u0433\u0430\u0437\u043e\u0441\u0438\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439 600x200x200 D600"},{"id":"2","value":"2650 \u0440\u0443\u0431. \u043c\u00b3
68.41"},{"id":"3","value":"
\u0420\u0430\u0437\u043c\u0435\u0440\u044b 600x200x200 D600 B 3,5 F- 100 \u0413\u041e\u0421\u0422 1360-2007, \u0413\u041e\u0421\u0422 31359-2007, \u0413\u041e\u0421\u0422 30247.1-94.<\/p>"},{"id":"4","value":""},{"id":"13","value":"600"},{"id":"14","value":"200"},{"id":"15","value":"200"},{"id":"5","value":""},{"id":"6","value":"B 3.5 B 5.0"},{"id":"7","value":"F100"},{"id":"8","value":"0.14"},{"id":"16","value":"0.15"},{"id":"17","value":"0.3"},{"id":"10","value":""},{"id":"9","value":"1.8"},{"id":"18","value":"28.8"},{"id":"11","value":""}]
    [extra_fields_search] => "Drauber" г. Электросталь "Drauber" Электросталь Газосиликат D600 600x200x200 Блок газосиликатный 600x200x200 D600 2650 руб. м³
68.41 
Размеры 600x200x200 D600 B 3,5 F- 100 ГОСТ 1360-2007, ГОСТ 31359-2007, ГОСТ 30247.1-94.
  600 200 200  B 3.5 B 5.0 F100 0.14 0.15 0.3  1.8 28.8  
    [created] => 2016-10-30 15:44:56
    [created_by] => 775
    [created_by_alias] => 
    [checked_out] => 0
    [checked_out_time] => 0000-00-00 00:00:00
Answer 1

Допустим ваш массив хранится в переменной $arr, а в ключе [extra_fields] этого массива сохранена валидная json-строка, тогда решение можно записать так:

array_map(function($i){
    $i->id != 2 ?: print $i->value;
}, json_decode($arr['extra_fields']));

В теле callback-функции записано условие, в котором проверяется значение поля id, если оно равно 2, то происходит вывод значения поля value. В результате вы увидите:

2650 руб. м³ 68.41
Answer 2

Доброе утро. Примерно так

$arr = '{"id":"2","value":"2650 \u0440\u0443\u0431. \u043c\u00b3 68.41"}';
$a = json_decode($arr, true);
echo $a['value'];
READ ALSO
Добавить теги в строку

Добавить теги в строку

ЗдравствуйтеЕсть строка такого вида

229
Не выполняется PHP на странице

Не выполняется PHP на странице

На Perl использую модуль HTML::Template; Выводом странички соответственно занимается Perl-скрипт, большие куски HTML_кода вытягивая из шаблоновПосле...

209
Получить url с флагом в Laravel

Получить url с флагом в Laravel

Всем приветСтолкнулся с задачей, в которой нужно получить полную строку get с флагом

226
Редирект url в подпапку

Редирект url в подпапку

Задача в следующем:

208