最佳方式转换PHP5.4数组指针引用是PHP5.3兼容

问题描述:

问题最佳方式转换PHP5.4数组指针引用是PHP5.3兼容

需要转换阵列的尊重,在PHP 5.4工程与PHP 5.3兼容版本。我无法更新我的现场网站PHP,所以我有点卡住了。我试图完成的是在提交表单时为Drupal 7创建优惠券代码。

当我看着:

PHP syntax for dereferencing function result很好的讨论。几乎看起来完全不可能。有几个很好的解决方案示例,我无法将其转换为我的问题。

5.4 dereferencing to valid 5.3 array call与我的问题非常相似,但我一直无法找出使用它的方法。

原,在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); 
+0

你的意思是你要转换'[]'来'阵列()'或者是有什么你这里就不说了,还是我错过了 – RiggsFolly

+0

我猜我不知道我会改变为array()。我试图用array()而不是[]来包装它们,它不起作用。我会添加一个我尝试过的例子。 – CJdriver

+0

你应该得到新的托管,然后确保他们使用现代的PHP。您无需升级就可以解决安全风险。 – Machavity

你似乎是无处不在缺少一个阵列级别

$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' 
        ) 
       ) 
); 
+0

我试过了,但没有保存这3项中的任何信息。它确实提交。不知道这是否会成为drupal相关的问题。 – CJdriver

+0

不能帮助Drupal,对不起 – RiggsFolly

+0

@CJdriver字段名似乎在你的两个例子之间改变,这可能是问题。如果你试图写入内建字段(你可能是),它们应该是'commerce_ *'而不是'store_ *'。除此之外,这个答案的位置和代码应该工作 – Clive