Вопрос:

Переменная PHP, переопределяющая предыдущую переменную

php class

50 просмотра

1 ответ

39 Репутация автора

Я работаю над сценарием на основе шаблона, предоставленного мне моим клиентом. Цель состоит в том, чтобы собрать данные из запроса POST, скомпилировать их и отправить в стороннее приложение.

Природа данных означает, что часто будет несколько экземпляров определенной группы переменных, например, Текущий адрес, Предыдущий адрес и Адрес работодателя.

В приведенном ниже коде новый объект определен для каждого типа адреса. Простой пример:

//set the variables from POST
$address_line_1 = $_POST['currentaddress'];
$prev_add_line_1 = $_POST['previousaddress'];
$emp_add_line_1 = $_POST['employeraddress'];

//create the request and set credentials
$request = new stdClass();
$request->request->Credentials->Username = $username;
$request->request->Credentials->Password = $password;
$request->request->Credentials->Account = $account;

//set classes for multiple address and populate with data for compiling
$address = new stdClass();
$address->AddressType = 'Current';
$address->Line1 = $address_line_1;

$address = new stdClass();
$address->AddressType = 'Previous';
$address->Line1 = $prev_add_line_1;

$address = new stdClass();
$address->AddressType = 'Employer';
$address->Line1 = $emp_add_line_1;

$customer->Addresses = array($address);
$request->request->Proposal->Customers = array($customer);

return $request;

Проблема, с которой я столкнулся, заключается в том, что, если это передано, последняя определенная переменная переопределяет первые две, поэтому они игнорируются и, следовательно, не отправляются стороннему приложению (в результате запрос отклоняется. за отсутствие необходимой информации).

В этом проекте также должны быть определены другие типы объектов, такие как:

$primary_customer_name = $_POST['primaryname'];
$secondary_customer_name = $_POST['secondaryname'];

$customer = new stdClass();
$customer->CustomerType = 'Primary';
$customer->Name = $primary_customer_name;

$customer = new stdClass();
$customer->CustomerType = 'Secondary';
$customer->Name = $secondary_customer_name;

Опять же, та же проблема здесь, когда вторичный клиент переопределяет первичного клиента.

Я не уверен, что мне не хватает, надеюсь, кто-то может указать на мою очевидную явную ошибку.

Если потребуется дополнительная информация, пожалуйста, дайте мне знать, и я обновлю этот пост.

Большое спасибо.

Автор: alexconnor7 Источник Размещён: 02.02.2017 02:06

Ответы (1)


3 плюса

6253 Репутация автора

Решение

Вы переписали переменную.

Например: следующее $aопределило бы как 2. Второй оператор перезапишет первый.

$a = 1;
$a = 2;

Так что вам нужно определить дополнительную переменную под другим идентификатором.

Например:

$address = new stdClass();
$address->AddressType = 'Current';
$address->Line1 = $address_line_1;

$address2 = new stdClass();
$address2->AddressType = 'Previous';
$address2->Line1 = $address_line_1;

Кроме того, вы ссылаетесь только на один $addressпри создании следующего массива. Вам нужно сослаться на все значения:

$customer->Addresses = array($address, $address2);
Автор: Chris Stryczynski Размещён: 02.02.2017 02:12
Вопросы из категории :
32x32