Как создать массив с ключами php с переменными для значений

#php #arrays #drupal #variables

#php #массивы #drupal #переменные

Вопрос:

Я использую drupal для создания некоторой пользовательской формы, которая отправляется третьей стороне, и я пытаюсь объединить результаты моей формы — к некоторым из которых применяются некоторые функции преобразования — для отправки получателю формы.

Я использовал функцию drupal_http_request от Drupal в простых формах, и она работала хорошо, но теперь, когда некоторые из моих результатов дают значение vars, я не уверен, как создать массив с ключами, который продолжает передавать значение var.

Я знаю, что когда я отправляю свою форму напрямую третьей стороне, они получают правильный результат, однако я пытаюсь отправить им результаты, но перенаправляю на страницу на моем собственном сайте, поэтому я знаю, что моя форма работает, по крайней мере, — и это просто функция использования trying encode, чтобыу меня есть контроль над перенаправлением, которого нет. но я даже не знаю, может ли массив с ключами иметь переменные в виде значений или нет, или это вопрос синтаксиса

Это мой код:

 function formshare_nameform_submit($form_id, amp;$form_state) {

// Lookup share matrix return value
$shareMatrixValue = setShareMatrixValue($form_state['values']['image_id']);
$langResultsCode = setLangForShare($langCode);
$gender = setGenderForShare($form_state['values']['gender']);
$first_name = $form_state['values']['first_name'];
$last_name = $form_state['values']['last_name'];
$email = $form_state['values']['email'];
$email_friend1 = $form_state['values']['email_friend1'];
$email_friend2 = $form_state['values']['email_friend2'];
$email_friend3 = $form_state['values']['email_friend3'];
$message = $form_state['values']['massage'];
$optin = $form_state['values']['optin'];    
$category = $form_state['values']['category'];  
$image_id = $shareMatrixValue;
$id_langue = $form_state['values']['id_langue'];

// Make an array of values to pass to 3rd party.
  $pass_these = array();
  $pass_these['shareMatrixValue'] = $shareMatrixValue;
  $pass_these['langResultsCode'] = $langResultsCode;
  $pass_these['gender'] = $gender;
  $pass_these['first_name'] = $first_name;
  $pass_these['last_name'] = $last_name;
  $pass_these['email'] = $email;
  $pass_these['email_friend1'] = $email_friend1;
  $pass_these['email_friend2'] = $email_friend2;
  $pass_these['email_friend3'] = $email_friend3;
  $pass_these['message'] = $message;
  $pass_these['optin'] = $optin;
  $pass_these['category'] = $category;
  $pass_these['image_id'] = $image_id;
  $pass_these['id_langue'] = $id_langue;


// Post the data to 3rd party.
  $url = 'http://mythirdpartysite.com';
  $headers = array('Content-Type' => 'application/x-www-form-urlencoded');
  $data = drupal_query_string_encode($pass_these);
  drupal_http_request($url, $headers, 'POST', $data);
}
  

Ответ №1:

вы можете либо сохранить переменную по ссылке с помощью amp;$var, либо просто сохранить имя переменной в массиве и использовать $$array[‘key’]; чтобы получить значение $var

лучше всего создать объект stdClass и сохранить переменные как атрибуты, он работает как ассоциативный массив, но он чище

Комментарии:

1. Я уже пытался использовать ref var, подобный этому: $pass_these[‘gender’] = amp;$gender; но это не сработало. Я знаю, потому что я должен получить ответ по электронной почте. я плохо разбираюсь в PHP, можете ли вы привести мне пример того, как я бы настроил объект stdClass?

2. $object = new stdClass(); $object->gender = amp;$gender; но вы могли бы использовать $pass_these['gender'] = $gender; then с другой стороны, просто получить значение в любом случае, не уверен, зачем вам нужна ссылка на переменную.