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

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

  • Завсегдатай
  • 1957
  • 267 / 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

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

draff

  • Гуру
  • 5803
  • 432 / 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

  • Завсегдатай
  • 1957
  • 267 / 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

  • Завсегдатай
  • 1957
  • 267 / 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/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Получить список выбранных изображений в медиаменеджере

Автор voron121

Ответов: 0
Просмотров: 94
Последний ответ 05.05.2022, 23:26:10
от voron121
Передать значения полей категории блога материалу

Автор Zelyonkin

Ответов: 4
Просмотров: 197
Последний ответ 24.02.2022, 18:05:47
от Zelyonkin
Как передать значения полей категории в значения полей материала?

Автор Upps_J

Ответов: 4
Просмотров: 227
Последний ответ 27.01.2022, 08:59:25
от Upps_J
Как получить дочерние теги для тегов на странице "Список всех меток"?

Автор fearlessfox

Ответов: 0
Просмотров: 180
Последний ответ 18.11.2021, 23:26:55
от fearlessfox
Получить URL из браузера на странице 404

Автор lgmax

Ответов: 0
Просмотров: 171
Последний ответ 26.06.2021, 18:04:04
от lgmax