Вариант 1.
$type = array( "resp_name" => "<здесь имя поля, например 'Ответственный'>" ); echo $line[$type['resp_name']]['Бонусный счет']['id'];
Возвращает пустоту.
Судя по всему перед выполнением кода КБ подменяет в куске кода Имя поля на его табличное имя fXXXX, а так как у меня в коде имя явно не указано, подмена не происходит.
Вариант 2.
$type = array( "resp_name" => "<здесь имя поля в БАЗЕ ДАННЫХ, например 'f9856'>" ); echo $line[$type['resp_name']]['Бонусный счет']['id'];
Возвращает ошибку "Cannot use string offset as an array".
Вопрос знатокам - что я делаю не так?
Вот код вычисления, где возникла ошибка
$fields = array ( "Отправитель" => "f5411", "Получатель" => "f5421", "Дата" => "f5431", "Сумма" => "f5531", "Основание" => "f5441", "Заказ" => "f5501", "Запчасть" => "f5511" ); $bonus_fields = array( "find" => array( "transaction_name" => "f5931", "resp_name" => "f5881", "sum_name" => "f5241", "bonus_for" => "поиск" ), "buy" => array( "transaction_name" => "f5871", "resp_name" => "f5891", "sum_name" => "f5251", "bonus_for" => "покупку" ), "pack" => array( "transaction_name" => "f5941", "resp_name" => "f5901", "sum_name" => "f5261", "bonus_for" => "упаковку" ), "send" => array( "transaction_name" => "f5951", "resp_name" => "f5911", "sum_name" => "f5271", "bonus_for" => "отправку" ) ); foreach ($bonus_fields as $type) { $tran = intval($line[$type['transaction_name']]['ID']); $resp_exists = intval($line[$type['resp_name']]['ID']) != 0; if (!$resp_exists && $tran != 0) { data_delete(451, EVENTS_ENABLE, "id={$tran}"); $line[$type['transaction_name']] = null; } if ($resp_exists) { if ($tran == 0) { //Исправить на динамически выбираемый $data[$fields['Отправитель']] = $line['Заказ']['К какой компании относится заказ']['Счет']['ID']; $data[$fields['Получатель']] = $line[$type['resp_name']]['Бонусный счет']['ID']; $data[$fields['Дата']] = date("Y-m-d h:i:s"); $data[$fields['Сумма']] = $line[$type['sum_name']]; $data[$fields['Основание']] = "Бонус за {$type['bonus_for']} {$line['Название']['Название']}"; $data[$fields['Заказ']] = $line['Заказ']['ID']; $data[$fields['Запчасть']] = $line['ID']; $line[$type['transaction_name']] = data_insert(451, EVENTS_ENABLE, $data); } else { $data[$fields['Получатель']] = $line[$type['resp_name']]['Бонусный счет']['ID']; $data[$fields['Сумма']] = $line[$type['sum_name']]; data_update(451, EVENTS_ENABLE, $data, "id={$tran}"); } } }
Сообщение отредактировал sxquer: 13 Июнь 2014 - 06:57