Как мне разместить двумерный массив в API - PullRequest
0 голосов
/ 17 января 2020

Проблема, с которой я сталкиваюсь, может показаться простой, но, поскольку я не могу ее решить, она становится довольно неприятной.

Мне нужно опубликовать данные в API. Я делаю это, используя cURL PHP, поэтому я получаю данные из формы, сохраняю их внутри переменных и тех переменных внутри массива для отправки, но один из этих параметров, которые мне нужно отправить, - это сам массив:

Эта информация предназначена для описания клиента:

"administrative": false,
"alias_numbers": [
   {
      "ac": "858",
      "cc": 34,
      "number_id": 3161,
      "sn": "880961"
   },
   {
      "ac": "958",
      "cc": 34,
      "number_id": 3239,
      "sn": "514"
   },
   {
      "ac": "465",
      "cc": 34,
      "number_id": 3241,
      "sn": "363983"
   },
   {
      "ac": "858",
      "cc": 34,
      "number_id": 3243,
      "sn": "88085692"
   },
   {
      "ac": "951",
      "cc": 34,
      "number_id": 3245,
      "sn": "598217"
   }
],
"customer_id": 1,

Я не уверен, как присвоить alias_numbers их значениям внутри моего dataArray, может быть максимум 10, но это контролируется внутри формы. Вот что я придумал:

$dataArray = array(
    "customer_id" => $subscriberCustomerId,
    "email" => $subscriberEmail,
    "username" => $subscriberComRegNum,
    "external_id" => $subscriberComRegNum,
    "primary_number" => array(
        "cc" => $subscriberPrimaryNumber["cc"],
        "ac" => $subscriberPrimaryNumber["ac"],
        "sn" => $subscriberPrimaryNumber["sn"]
    ),
    for ($i=0; $i < sizeof($arrayAliasNumbers); $i++) { 
        "alias_numbers" => array(
            "cc" => $arrayAliasNumbers[$i]["cc"],
            "ac" => $arrayAliasNumbers[$i]["ac"],
            "sn" => $arrayAliasNumbers[$i]["sn"]
        ),
    }
    "domain_id" => $subscriberDomainId,
    "administrative" => $subscriberAdministrative,
    "status" => $subscriberStatus
);

Вы можете видеть, что есть primary_number, который не доставляет никаких проблем, поскольку может быть только один, но с этими псевдонимами я полностью потерялся.

Здесь у вас есть массив, который я пытаюсь отправить (Это из ProcessMaker, отсюда и переменные @ =):

for ($i=1; $i <= 10; $i++) { 
    if (!isset(@@formSubscriberAliasNumGrid[$i]['subscriberAliasCc']) && !isset(@@formSubscriberAliasNumGrid[$i]['subscriberAliasAc']) && !isset(@@formSubscriberAliasNumGrid[$i]['subscriberAliasSn']) {
        break;
    }else{
        $subscriberAliasNumber[$i] = array(
            "cc" => @=formSubscriberAliasNumGrid[$i]['subscriberAliasCc'],
            "ac" => @=formSubscriberAliasNumGrid[$i]['subscriberAliasAc'],
            "sn" => @=formSubscriberAliasNumGrid[$i]['subscriberAliasSn']
        );

        $arrayAliasNumbers[$i] = [$subscriberAliasNumber[$i];
    }

Спасибо за вашу помощь, С наилучшими пожеланиями!

1 Ответ

0 голосов
/ 17 января 2020

Создайте массив отдельно, а затем добавьте его в ваш массив.

$tmp = [];

for ($i=0; $i < sizeof($arrayAliasNumbers); $i++) { 
    $tmp[] = [
                "cc" => $arrayAliasNumbers[$i]["cc"],
                "ac" => $arrayAliasNumbers[$i]["ac"],
                "sn" => $arrayAliasNumbers[$i]["sn"]
            ];
}

$dataArray = array(
    "customer_id" => $subscriberCustomerId,
    "email" => $subscriberEmail,
    "username" => $subscriberComRegNum,
    "external_id" => $subscriberComRegNum,
    "primary_number" => array(
        "cc" => $subscriberPrimaryNumber["cc"],
        "ac" => $subscriberPrimaryNumber["ac"],
        "sn" => $subscriberPrimaryNumber["sn"]
    ),
    "alias_numbers"  => $tmp,                       // <- added here
    "domain_id" => $subscriberDomainId,
    "administrative" => $subscriberAdministrative,
    "status" => $subscriberStatus
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...