2016-04-21 18 views
-1

Ausgabebeste Weg convert PHP5.4 Array Dereferenzierungen To Be PHP5.3 Kompatibel

Benötigen Sie ein Array Deference zu konvertieren, die in PHP 5.4 auf eine Version funktioniert, die mit PHP 5.3 funktioniert. Ich kann meine Live-Site-PHP nicht aktualisieren, daher bin ich ein bisschen festgefahren. Was ich versuche zu erreichen, ist einen Gutscheincode für Drupal 7 zu erstellen, da ein Formular eingereicht wird.

Wo ich geschaut haben:

PHP syntax for dereferencing function result gute Diskussion. Fast sieht es so aus, als ob es überhaupt nicht möglich ist. Es gibt mehrere gute Lösungsbeispiele, die ich nicht zu meinem Problem konvertieren konnte.

5.4 dereferencing to valid 5.3 array call Sehr ähnlich zu meinem Problem, aber ich war nicht in der Lage, einen Weg, um es zu verwenden.

Original, das in PHP funktioniert 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' 
    ], 
]]; 

Was ich habe versucht,

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

Voll Chunk

$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

Haben Sie meinen Sie '[]' auf 'Array konvertiert werden soll()', oder gibt es etwas, das Sie haben hier nicht gesagt, oder ich habe – RiggsFolly

+0

vermisste ich denke, Ich bin mir nicht sicher, was ich in Array() ändern würde. Ich habe versucht, sie alle in Array() anstelle von [] zu wickeln und es hat nicht funktioniert. Ich füge ein Beispiel von dem hinzu, was ich versucht habe. – CJdriver

+0

Sie sollten dann neues Hosting bekommen und sicherstellen, dass sie ein modernes PHP verwenden. Sie öffnen sich für Sicherheitsrisiken, indem Sie nicht upgraden. – Machavity

Antwort

2

Sie scheinen eine Array-Ebene zu fehlen überall

$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

Ich habe das versucht, aber es speichert keine der Informationen von diesen 3 Elementen. Es reicht aber ein. Nicht sicher, ob das ein Drupal-bezogenes Problem wäre oder nicht. – CJdriver

+0

Kann nicht mit Drupal helfen, sorry – RiggsFolly

+0

@CJdriver Die Feldnamen scheinen sich zwischen Ihren 2 Beispielen zu ändern, das könnte das Problem sein. Wenn Sie versuchen, in die eingebauten Felder zu schreiben (was Sie wahrscheinlich sind), sollten sie "commerce_" und nicht "store_" heißen. Ansonsten ist die Antwort richtig und der Code sollte funktionieren – Clive