最佳方法将 PHP5.4 数组取消引用转换为与 PHP5.3 兼容


Best Way convert PHP5.4 Array Dereferences To Be PHP5.3 Compatible

Issue

需要将适用于 PHP 5.4 的数组顺从转换为适用于 PHP 5.3 的版本。我无法更新我的实时站点PHP,所以我有点卡住了。我试图完成的是提交表单时为 Drupal 7 创建一个优惠券代码。

我看过的地方:

用于取消引用函数结果的 PHP 语法 很好的讨论。看起来几乎是不可能的。有几个很好的解决方案示例,我无法转换为我的问题。

5.4 取消引用有效的 5.3 数组调用 与我的问题非常相似,但我无法找到使用它的方法。

适用于 PHP 5.4 的原版:

$coupon->store_discount_reference = ['und'=>[['target_id'=>"57"]]];
$coupon->store_coupon_exclusive = ['und'=>[['value'=>"0"]]];
$coupon->store_coupon_conditions = ['und' => [
    [
        'condition_name'=>'store_coupon_usage_evaluate_usage',
        'condition_settings'=> ['max_usage'=>'1'],
        'conditions_negative'=>0,
        'remove_condition'=>'Remove'
    ],
]];

我试过什么

$coupon->store_discount_reference = array('und'=> array('target_id'=>"57"));
$coupon->store_coupon_exclusive = array('und'=> array('value'=>"0"));
$coupon->store_coupon_conditions = array('und' => array('condition_name'=>'store_coupon_usage_evaluate_usage','condition_settings'=> array('max_usage'=>'1'),'conditions_negative'=>0,'remove_condition'=>'Remove'));

全块

$coupon = new stdClass();
$coupon->type = "discount_coupon";
$coupon->coupon_id = '';
$coupon->code = $code;
$coupon->bulk = false;
$coupon->created = '';
$coupon->status = 1;
$coupon->uid = 0;
$coupon->is_new = true;
$coupon->commerce_discount_reference = ['und'=>[['target_id'=>"57"]]];
$coupon->commerce_coupon_exclusive = ['und'=>[['value'=>"0"]]];
$coupon->commerce_coupon_conditions = ['und' => [
    [
        'condition_name'=>'commerce_coupon_usage_evaluate_usage',
        'condition_settings'=> ['max_usage'=>'1'],
        'conditions_negative'=>0,
        'remove_condition'=>'Remove'
    ],
]];
commerce_coupon_save($coupon);

您似乎到处都缺少数组级别

$coupon->store_discount_reference = array('und'=> array(array('target_id'=>"57")));
$coupon->store_coupon_exclusive = array('und'=> array( array('value'=>"0")));
$coupon->store_coupon_conditions = 
   array('und' => 
           array( 
                  array('condition_name'=>'store_coupon_usage_evaluate_usage',
                        'condition_settings'=> array('max_usage'=>'1'),
                        'conditions_negative'=>0,
                        'remove_condition'=>'Remove'
                   )
                )
  );