【问题标题】:How to create a php keyed array with variables for values如何使用值的变量创建一个 php 键控数组
【发布时间】:2011-10-24 15:30:06
【问题描述】:

我正在使用 drupal 创建一些提交给第三方的自定义表单,并且我正在尝试捆绑我的表单结果 - 其中一些应用了一些转换功能 - 以发送给表单收件人。

我已经在简单的表单上使用了 Drupal 的 drupal_http_request 函数,并且它运行良好,但是现在我的一些结果为 vars 赋予了价值,我不确定如何创建一个继续传递值的键控数组变量。

我知道当我将表单直接发送给第三方时,他们会收到正确的结果,但是我试图将结果发送给他们但重定向到我自己网站中的页面,所以我知道我的表单至少可以工作- 它只是使用尝试编码的这个功能,所以我可以控制没有的重定向。 但我什至不知道键控数组是否可以将变量作为其值,或者是否是语法问题

这是我的代码:

function formshare_nameform_submit($form_id, &$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);
}

【问题讨论】:

    标签: php arrays drupal variables


    【解决方案1】:

    您可以使用 &$var 通过引用存储变量,也可以简单地将变量的名称存储在数组中并使用 $$array['key'];获取 $var 值

    最好的办法是创建一个 stdClass 对象并将变量存储为属性,它像关联数组一样工作,但更简洁

    【讨论】:

    • 我确实已经尝试过使用这样的 ref var:$pass_these['gender'] = &$gender;但它没有用。我知道因为我应该收到一封电子邮件回复。我不擅长 PHP,你能举个例子说明我如何设置 stdClass 对象吗?
    • $object = new stdClass(); $object->gender = &$gender; 但您可以使用$pass_these['gender'] = $gender; 然后在另一边获取值,不知道为什么需要对变量的引用。
    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    相关资源
    最近更新 更多