0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 524 Просмотров
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
Когда вызываю
Код
$test_text1 = $ObjectField_name->field_name0->namer_ff;
Получаю
Код
`stdClass Object
(
    [test_text] => Да, есть
    [test_list] => 0
)
stdClass Object
(
    [test_text] => Нет, нету
    [test_list] => 0
)`

Затем пытаюсь получить


Код
$fieldValues = $ObjectField_name->field_name0->namer_ff;
$fieldTexts = array_reduce($fieldValues, function ($acc, $valueData) {
 
    if (!empty($valueData->test_text)) {
        $acc[] = trim($valueData->test_text);
    }
 
    return $acc;
});

но ничего не выводит. При попытке сделать var_dump и print_r ничего не выводится. Заранее благодарю за помощь!
*

sivers

  • Живу я здесь
  • 2513
  • 344 / 0
Re: Как получить значения массива?
« Ответ #1 : 20.08.2020, 16:58:09 »
Потому что там объект, а не массив.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
Re: Как получить значения массива?
« Ответ #2 : 20.08.2020, 17:05:21 »
Потому что там объект, а не массив.

Подскажите, пожалуйста, а как нужно правльно? Только учусь.
*

sivers

  • Живу я здесь
  • 2513
  • 344 / 0
Re: Как получить значения массива?
« Ответ #3 : 20.08.2020, 17:10:28 »
Подскажите, пожалуйста, а как нужно правльно? Только учусь.
Расскажите что хотите получить на выходе.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Как получить значения массива?
« Ответ #4 : 20.08.2020, 17:20:12 »
Код
$fieldTexts = array_reduce($fieldValues[0], function ($acc, $valueData) {
Пробуйте
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
Re: Как получить значения массива?
« Ответ #5 : 21.08.2020, 09:20:55 »
$fieldTexts = array_reduce($fieldValues[0], function ($acc, $valueData) {

Выдает ошибку
Код
0 Cannot use object of type stdClass as array
*

sivers

  • Живу я здесь
  • 2513
  • 344 / 0
Re: Как получить значения массива?
« Ответ #6 : 21.08.2020, 09:35:37 »
Расскажите откуда у вас взялся этот объект. По структуре очень напоминает значение поля типа subform с атрибутом repeatable, которое распаковано из json. Если все так, то достаточно было бы распаковывать со вторым аргументом true, чтобы на выходе был массив, а не объект.
Как вариант - перепаковать объект в массив:
Код
$ObjectField_name_arr = json_decode(json_encode($ObjectField_name), true);
либо добавить приведение типа при передаче объекта функции:
Код
$fieldTexts = array_reduce((array)$fieldValues, function ($acc, $valueData) {
...
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
Re: Как получить значения массива?
« Ответ #7 : 21.08.2020, 11:36:20 »
Расскажите откуда у вас взялся этот объект. По структуре очень напоминает значение поля типа subform с атрибутом repeatable,
Да, Вы правы, это repeatble внутри еще одного repeatable.
Выполнил первый код, но теперь не получается получить данные нормальным образом.
Например, чтобы получить следующие объекты - необходимо несколько раз делать цикл внутри цикла (или это невернвй способ?)
Код
                        $ObjectField_name_arr = json_decode(json_encode($ObjectField_name), true);
                        $array_dd = $ObjectField_name_arr;
                       
                       
                        foreach ($array_dd as $array_away) {
                           $extract_1 = $array_away;
                           print_r($extract_1);
                        }

*

sivers

  • Живу я здесь
  • 2513
  • 344 / 0
Re: Как получить значения массива?
« Ответ #8 : 21.08.2020, 12:11:31 »
Например, чтобы получить следующие объекты - необходимо несколько раз делать цикл внутри цикла (или это невернвй способ?)
Код
Вполне себе вариант. Выше вы пытались использовать функцию array_reduce - она работает только с массивами. Именно потому была ругань на аргумент-объект. Отсюда рекомендация сделать объект массивом.
Но если эту функцию не использовать, а пробегать значения вложенными циклами, то конвертация не нужна. PHP сейчас умеет перебирать в цикле и объекты тоже. Например, вот такой код вполне работает:
Код
<?php
$obj = new stdClass;
$obj->key1 = "val1";
$obj->key2 = "val2";
$obj->key3 = "val3";
$obj->key4 = "val4";

foreach($obj as $k => $v){
    echo "{$k}: {$v};\n";
}
?>
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Получить category description image в index.php шаблона

Автор goga_pgasovav

Ответов: 6
Просмотров: 344
Последний ответ 12.07.2024, 17:06:14
от goga_pgasovav
Получить ошибку

Автор KevinSimon

Ответов: 0
Просмотров: 324
Последний ответ 22.09.2023, 15:20:21
от KevinSimon
Получить текущий номер страницы плагина "Разрыв страницы" (pagebreak)

Автор sertlan

Ответов: 1
Просмотров: 521
Последний ответ 12.06.2023, 18:14:09
от sertlan
[Решено] Получить список тегов каждого материала в блоге категории

Автор goga_pgasovav

Ответов: 1
Просмотров: 496
Последний ответ 02.03.2023, 14:20:21
от goga_pgasovav
Получить наименование товара по ID

Автор Evgen Kulibin

Ответов: 1
Просмотров: 365
Последний ответ 10.12.2022, 06:46:41
от pavelrer