【问题标题】:Getting data in particular format in PHP for Post request在 PHP 中为 Post 请求获取特定格式的数据
【发布时间】:2020-03-25 22:56:56
【问题描述】:

我必须以以下格式发送一些数据-

$postData = [
            'certExpiryDate' => $certExpiryDate,
            'certType' => 'SSL',
            'AltName' => [
                $altName[0],$altName[1]
            ],
            'csr' => $csr
        ];

$altName 是一个包含 2 个或更多字符串的数组,例如 domain1.com、domain2.com。

AltName 参数需要这种格式的数据-

'AltName' => [
    'domain1.com','domain2.com' 
],

(如果我这样硬编码并发送,一切正常。这是正确的格式)

如果我像这样直接取数组 $altName-

'AltName' => [
        $altName 
    ],

我做了一个 var_dump,为此它在“domain1.com,domain2.com”之外添加了引号,它认为这是错误的。

我需要它采用 $altName[0],$altName[1] 的格式,这将是正确的,但我正在努力解决如何循环这个数组以防万一具有多于 2 的值,但仍以所需的格式获取。

【问题讨论】:

  • 我是否正确理解问题在于它用单引号括起来?
  • 请显示您得到的确切输出以及您的期望。 var_dump() 在它转储的字符串周围添加引号,这就是它的工作原理,并不意味着它们是值的一部分

标签: php arrays data-structures


【解决方案1】:

你的尝试:

'AltName' => [
    $altName 
 ],

没有按预期工作,因为它将数组 $altName 包装在另一个数组中(由 [] 创建)。

只需将$altName 数组直接设置为属性的值即可。不需要额外的数组:

'AltName' => $altName

演示:http://sandbox.onlinephpfunctions.com/code/fa3dd6a974be7ced4bdc5d878f692549b96e2b95

【讨论】:

  • 天哪,这太尴尬了。非常感谢你。我尝试了所有可能的变化,explode,implode,addslash,但这正是正在发生的事情,它已经是一个数组,并且直接传递它而不用括号。
【解决方案2】:

但我正在努力解决如何遍历这个数组以防万一 多于 2 的值,但仍以所需的格式获取。

发布直接价值:

//$altName  = ["domain1.com", "domain2.com"]; 
                //OR 
$altName  = array("domain1.com", "domain2.com");

$postData = ['AltName' => $altName];
var_dump($postData);

输出:

array(1) {
  ["AltName"]=>
  array(2) {
    [0]=>
    string(11) "domain1.com"
    [1]=>
    string(11) "domain2.com"
  }
}

【讨论】:

  • OP 已经在他们的第一个代码 sn-p 中展示了这个版本。但问题的关键部分是:I'm struggling on how to loop through this array in case it has more values than 2 and still get it in the required format.
  • 我改变了答案。现在再试一次。
猜你喜欢
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-26
  • 2019-09-05
相关资源
最近更新 更多