2015-09-21 3 views
0

Я пытаюсь создать переменную и поместить ее в массив. Например:Передача переменных в значения в массивах PHP

$ch = curl_init('https://apps.net-results.com/api/v2/rpc/server.php?Controller=Contact'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_USERPWD, 'user:pass'); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 
    json_encode(
     array(
      'id' => uniqid(), 
      'method' => 'getMultiple', 
      'jsonrpc' => '2.0', 
      'params' => array(
       'offset' => 0, 
       'limit' => 50, // 10, 25, or 50 
       'order_by' => 'contact_email_address', //'contact_email_address' or 'contact_id' 
       'order_dir' => 'ASC', //'ASC' or 'DESC' 
      ) 
     ) 
    ) 
); 

$strResponse = curl_exec($ch); 
$strCurlError = curl_error($ch); 
if (!empty($strCurlError)) { 
    //handle curl error 
    echo "Curl Error<br />$strCurlError<br />"; 
} else { 
    //check for bad user/pass 
    if ($strResponse == "HTTP/1.0 401 Unauthorized: Your username name and/or password are invalid.") { 
     //handle login error 
     echo "Error<br />$strResponse<br />"; 
    } else { 
     //successful call, check for api success or error 
     $objResponse = json_decode($strResponse); 
     if (property_exists($objResponse, 'error') && !is_null($objResponse->error)) { 
      //handle error 
      $intErrorCode = $objResponse->error->code; 
      $strMessage = $objResponse->error->message; 
      $strData = $objResponse->error->data; 
      echo "Error<br />Code: $intErrorCode<br />Message: $strMessage<br />Data: $strData<br />"; 
     } else { 
      //handle success 
      //echo "Success<br />"; 
      $objResult = $objResponse->result; 
      $intTotalRecords = $objResult->totalRecords; 
      //echo "Total Records: $intTotalRecords<br />"; 
      $arrContacts = $objResult->results; 
      //echo $arrContacts[0]->country; 
      //echo $arrContacts[3]->last_name; 
      //echo "<pre>"; 
      //print_r($arrContacts); 
      //echo "<pre/>"; 

     } 
    } 
} 

Я не уверен, что это возможно. Я пробовал делать разные вещи, такие как создание класса и размещение функции в классе в массиве, но это не работает. Может ли кто-нибудь дать мне правильный синтаксис того, что я должен попробовать?

+0

построить массив, затем проанализировать его на 'curl_setopt' таким образом, чтобы вы могли отлаживать его правильно –

+0

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

ответ

1

Если вы передадите параметры через сообщение, вы должны использовать http_build_query(), и вы можете передать его как поля поля CURL.

Вы должны установить:

$array = [ 
    'id'  => uniqid(), 
    'method' => 'getContactActivity', 
    'jsonrpc' => '2.0' 
]; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"http://example.site"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array)); 
curl_exec($ch); 
curl_close($ch); 
+0

awesome ..... так что я могу использовать переменную в массиве вроде этого ?: 'somevariable' => $ var, –

+0

fyi: нормальный (не используя http_build_query()) массив действителен –

0

Оставьте вне вызов json_encode(). Значение параметра CURLOPT_POSTFIELDS должно быть либо ассоциативным массивом, либо строкой в ​​формате URL-кодирования. Если вы используете массив, он автоматически закодирует его для вас.

Смежные вопросы