Php 如何在curl脚本中处理多个select值

Php 如何在curl脚本中处理多个select值,php,curl,salesforce,Php,Curl,Salesforce,我正在将一些数据发送到SalesForce,但在某些用于多选的值方面存在一些问题。我不认为这是专门针对Salesforce的,所以我在这里发布了这个问题 这是我当前的脚本: <?php if($_POST['cis'] == '1'){ $query['00ND0000003viLy'] = array( 'Essential', 'CIS' ); }else{ $query['00ND0000003viLy'] = 'Essen

我正在将一些数据发送到SalesForce,但在某些用于多选的值方面存在一些问题。我不认为这是专门针对Salesforce的,所以我在这里发布了这个问题

这是我当前的脚本:

<?php

  if($_POST['cis'] == '1'){
    $query['00ND0000003viLy'] = array(
      'Essential',
      'CIS'
    );
  }else{
     $query['00ND0000003viLy'] = 'Essential';
  }

  foreach ( $query as $key => $value) {
    $post_items[] = $key . '=' . $value;
  }
  $post_string = implode ('&', $post_items);

  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, 'xxx');
  curl_setopt($curl, CURLOPT_POST, count($post_items));
  curl_setopt($curl, CURLOPT_POSTFIELDS, $post_string);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);

  $result = curl_exec($curl);

  curl_close($curl);

  echo $result;

?>

SalesForces'结束时,
$query['00ND0000003viLy']
的值以字符串形式出现,
数组
(当它与条件匹配时)


如何将多个值分配给
$query['00ND0000003viLy']
,以便将其解释为多选?

将参数添加为http查询字符串,如下所示:

$post_string = http_build_query($query);

curl_setopt($curl, CURLOPT_URL, 'xxx');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);

好的,这很可能是salesforce特有的,tl;dr是指值必须是单个字符串并用分号分隔。这是我给出的示例的工作代码:

if($_POST['cis'] == '1'){
    $query['00ND0000003viLy'] = 'Essential; CIS';
  }else{
     $query['00ND0000003viLy'] = 'Essential';
  }
对于需要更具动态性的解决方案的其他人,应采用以下方法:

join(';', $query['00ND0000003viLy'])
(再举一次我最初的例子)

答案的关键在这里:


Oh和@sanderbee的答案包含了一种更简洁的方法来构建查询。

查看此问题以获得一些选项。嗯,我刚看了一下,但我不确定它到底有什么关系。我没有遇到任何错误,我只需要知道如何为这种卷曲执行形成一个多重选择。只要给它一个机会,所有其他字段(从问题中省略)都很好,但是这个字段现在是空的,因此,即使是字符串
数组
。无论如何,这显然是处理生成查询的更简洁的方法!嗯,真奇怪。用你的数据试过了,对我来说很好。我只是将CURL_POST值更改为true…啊,很抱歉,我甚至没有注意到这里的更改,我将尝试一下!即使在那次改变之后,这个领域仍然是空白的。查看Salesforce提供的web to lead表单,它所做的只是将字段视为多选字段,我看不出它有什么独特之处。但也许这是salesforce特有的东西…