【问题标题】:How do I post a two-dimensional array to an API如何将二维数组发布到 API
【发布时间】:2020-01-17 10:31:03
【问题描述】:

我面临的问题可能看起来很简单,但由于我无法尝试,它变得相当麻烦。

我需要将数据发布到 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];
    }

感谢您的帮助, 最好的问候!

【问题讨论】:

  • 您可以将其转换为 JSON,这几乎适用于任何客户端。 json_encode()
  • 不,你不能只是在数组数据声明的中间添加一个for 循环。您需要在此之外进行循环,并在此键下添加新元素,使用 $dataArray['alias_numbers'][] = …;
  • 感谢@RiggsFolly 的帮助!正如您在我的 cURL 选项数组中所说的 json_encode($dataArray) 一样,我正在对其进行编码,但我需要知道如何插入存储在“alias_numbers”中的多个数组
  • @04FS 我知道我的声明有些愚蠢,你是完全正确的。确认一下,现在我将使用您看到的所有参数声明 $dataArray,但这次是这样的:` "alias_numbers" => array(), "domain_id" => $subscriberDomainId, "administrative" => $subscriberAdministrative, ' 然后我将使用 for 循环并像这样插入 $dataArray['alias_numbers'][$i]['cc'] 我想我明白了,非常感谢!

标签: php arrays curl post


【解决方案1】:

单独制作数组,然后将其添加到您的数组中。

$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
);

【讨论】:

  • 谢谢你们,我猜这是一个愚蠢问题的愚蠢解决方案。至少今天是星期五!周末愉快:)
猜你喜欢
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多