2016-04-21 51 views
-1

問題最佳方式轉換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

回答

2

你似乎是無處不在缺少一個陣列級別

$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

相關問題