Страница 1 из 2

Забрать данные из массива.

Добавлено: 04 апр 2022, 20:17
ink64rus
Здравствуйте, прошу помочь, никак не соображу.
В некоей сущности "А" указывается стоимость работ и исполнители (в поле "сущность, выпадающий список ajax"), т.е. в одном поле может быть выбрано несколько исполнителей.
В этой же сущности "А" в поле "Ajax запрос" проводятся вычисления и получаем массив в виде ["id исполнителя 1"] => "cумма зарплаты" ["id исполнителя 2"] => "cумма зарплаты" (Например [2] => 1000 [3] => 800)

Не могу понять как добраться до этих данных из другой сущности. Если сохраняю этот массив в переменной, то он вместо массива туда сохраняет слово "Array".
Последние строки аякс запроса в Сущности "А" field_447:

Код: Выделить всё

print_r($zp_massiv);
$form_field_value = $zp_massiv;
Результат вывода:

Код: Выделить всё

Array ( [2] => 150 [3] => 150 )
Из другой сущности "B", пытался получить значение поля в массиве, обращаясь к его имени:

Код: Выделить всё

$zapros = db_fetch_array (db_query ("SELECT field_447 FROM app_entity_30"));
print_r($zapros[field_447][2]);
Результат вывода :) буква "r" из слова Array. Т.е. вместо значения поля из массива, получаю букву. Сильно не бейте пхп и скл изучаю недавно. В чем моя ошибка?
Спасибо.

Re: Забрать данные из массива.

Добавлено: 04 апр 2022, 21:10
ink64rus
Ну или проще. Если поле хранит не одно значение, а строку массива, как правильно сделать sql запрос?

Re: Забрать данные из массива.

Добавлено: 04 апр 2022, 22:41
remchik
Массив в БД - странновато.
Я бы сделал сущность - работа, и подсущность исполнители.
Тогда все встает на свои места.


******
https://www.php.net/manual/ru/control-s ... oreach.php

Re: Забрать данные из массива.

Добавлено: 06 апр 2022, 03:02
Antonyous99
$zapros = db_fetch_array (db_query ("SELECT field_447 FROM app_entity_30"));
print_r($zapros[field_447][2]);
$zapros[field_447][2] - похоже что там вообще пусто. Попробуйте вывести весь массив: print_r($zapros);

Re: Забрать данные из массива.

Добавлено: 06 апр 2022, 14:40
ink64rus

Код: Выделить всё

Array
(
    [field_447] => Array
)

Re: Забрать данные из массива.

Добавлено: 06 апр 2022, 15:40
nruslan2
Это массив, но только там ключ массива это название столбца таблицы!
В том виде в котором вы написали у вас только данные первой строки выборки Запроса! если нужны все строки то их перебирать циклом надо.

ЗЫ для вывода(проверки) лучше использовать команду не print_r, а print_rr

Re: Забрать данные из массива.

Добавлено: 06 апр 2022, 21:46
ink64rus
Ну хорошо, а почему я его просмотреть не могу?

Код: Выделить всё

$zapros = db_fetch_array (db_query ("SELECT field_447 FROM app_entity_30"));
$massiv = $zapros[field_447];
echo '<pre>';
print_rr($massiv);
echo '</pre>';
Выводит

Re: Забрать данные из массива.

Добавлено: 06 апр 2022, 22:02
Antonyous99

Код: Выделить всё

$zapros = db_fetch_array (db_query ("SELECT * FROM app_entity_30"));
print_r($zapros);
Ну, если и тут ничего не будет...

Re: Забрать данные из массива.

Добавлено: 06 апр 2022, 22:17
ink64rus
Так я проверял. В том-то и дело, что есть:

Код: Выделить всё

Array
(
    [id] => 23
    [parent_id] => 0
    [parent_item_id] => 17
    [linked_id] => 0
    [date_added] => 1647037971
    [date_updated] => 1649245073
    [created_by] => 1
    [sort_order] => 0
    [field_260] => 1
    [field_274] => 
    [field_381] => 4
    [field_382] => 
    [field_392] => 1000
    [field_400] => 1000
    [field_418] => 100
    [field_419] => 1000
    [field_420] => 900
    [field_446] => 2,3
    [field_447] => Array
    [field_606] => 
)
массив из field_447 сущности 30 в нужную мне я "перетаскивал", с помощью костылей, через serialize/unserialize. Но если массив есть, то значит можно обратиться к нему и без этого и добраться до нужной строки со значением. А я вокруг да около хожу :). По совету выше, уже параллельно пару вариантов рассматриваю как изменить структуру рассчета зарплаты.

Re: Забрать данные из массива.

Добавлено: 07 апр 2022, 07:08
support

Код: Выделить всё

$zapros = db_fetch_array (db_query ("SELECT field_447 FROM app_entity_30"));
- этот вариант не рабоатет, так как вы выбираете не одну, а все записи и их нужно перебирать в цикле, пример:

Код: Выделить всё

$zapros_query =db_query ("SELECT field_447 FROM app_entity_30");
while($zapros = db_fetch_array($zapros_query ))
{
print_r($zapros);
}