2012-03-28 5 views
0

Ich versuche, Daten in ein serialisiertes Array zu analysieren, aber es nicht herausfinden kann und es ausgibt. Was ich versuche zu tun, ist update_post_meta zu verwenden, um das serialisierte Array mit Werten zu füllen, die dazu analysiert werden.Parsen von Daten zu einem serialisierten Array erzeugt skalare Wert Warnungen und fatalen String-Offset

Beispiel für die Ausgabe des Arrays:

get_post_meta('840', '_eshop_product',true); 


(
[sku] => 1234567885 
[products] => 
Array 
( 
    [1] => Array 
    ( 
     [option] => Retail 
     [price] => 3.99 
     [tax] => 1 
     [saleprice] => 
    ) 
) 
[description] => Astonishing X-men 
[shiprate] => A 
[featured] => Yes 
[sale] => yes 
[cart_radio] => 0 
[optset] => 
) 

Alles, was ich für Ressourcen finden kann, ist Beispiel für get_post_meta und ich versuche update_post_meta zu nutzen neue Daten in diese Bereiche zu analysieren. Hier ist der Code:

$meta2 = update_post_meta($post_id, '_eshop_product', true); 
$meta3 = update_post_meta; 
$meta3($post_id, '_eshop_stock', true); //works 

$meta2['sku']=htmlspecialchars($_POST['eshop_sku']); //this is line 90 
if($meta2['sku']=''){update_post_meta($meta2['_sku'], "{$id}");} //this is line 91 

$numoptions=$eshopoptions['options_num']; 
for($i=1;$i<=$numoptions;$i++) 
{ 
    $meta2['products'][$i]['option']=htmlspecialchars($_POST['eshop_option_'.$i]); //this is line 96 
    if($_POST['eshop_price_'.$i]='0'){update_post_meta($meta2($_POST['eshop_price_'.$i]), "{pricing_high}");} 

    if($_POST['eshop_tax_'.$i]='No'){update_post_meta($meta2($_POST['eshop_tax_'.$i]), 'band 1');} //this is line 99 
} 

$meta2['description']=htmlspecialchars($_POST['eshop_product_description']); 
if($meta2['description']==''){update_post_meta($meta2['description'], 'singles');} 

$meta2['shiprate']=$_POST['eshop_shipping_rate']; 
if($meta2['shiprate']='F'){update_post_data($meta2['_Shipping Rate'], 'A');} 

if($_POST['eshop_sale_product']=='No'){update_post_meta($id, '_eshop_sale', 'yes');} 

Und das sind die Fehler, die ich bekomme:

Warning: Cannot use a scalar value as an array in /home/***/public_html/wp-content/themes/***/mtgpage.php on line 90 

Warning: Cannot use a scalar value as an array in /home/***/public_html/wp-content/themes/***/mtgpage.php on line 91 

Warning: Cannot use a scalar value as an array in /home/***/public_html/wp-content/themes/***/mtgpage.php on line 96 

Fatal error: Function name must be a string in /home/***/public_html/wp-content/themes/***/mtgpage.php on line 99 

Wenn ich das Produkt auch in Wordpress bearbeiten, wo die benutzerdefinierten Daten würden unter dem Editor befinden - es ist ein Fehler, und die benutzerdefinierten Felder werden nicht angezeigt:

Fatal error: Cannot use string offset as an array in /home/***/public_html/wp-content/plugins/eshop/eshop-product-entry.php on line 44 
+0

Was sind die Fehler genau? – Shoe

+0

String-Offset, Skalarwert und Funktion kein String - aktualisierte Code mit mehr Details - Thx für das Interesse –

Antwort

0

Es gibt viele Fehler dort. Die ersten drei Fehler beziehen sich auf die Funktion update_post_meta(), die kein Array zurückgibt. Also $meta2 ist kein Array und man kann es nicht so behandeln. Überprüfen Sie diese Funktion und stellen Sie sicher, dass sie ein Array zurückgibt.

Jedes if Ihres Skripts wird True zurückgeben. Zum Beispiel ist if($meta2['shiprate']='F') immer wahr, weil Sie $meta2['shiprate'] = einer Zeichenfolge zuweisen und der ausgewertete Test if ('F') ist, was wahr ist. Vielleicht möchten Sie den Wert von $meta2['shiprate'] testen, dann müssen Sie == wie folgt verwenden: if($meta2['shiprate']=='F').

Für den letzten Fehler, ich verstehe nicht genau, was Sie versuchen, hier zu aktivieren: $meta2($_POST['eshop_tax_'.$i]), aber es ist nicht eine gültige Verwendung der Variablen der Variablen an eine Zeichenfolge Funktionsname. Sie möchten wahrscheinlich $meta2[$_POST['eshop_tax_'.$i]] tun.

Verwandte Themen