2016-05-13 3 views
1

Ich brauche Hilfe, um Informationen in einem Formular zu analysieren. Gerade jetzt, wenn das Basisarray verwendet wird, wird eine Adresse als "3 Columbus PlaceApt1" zurückgegeben, wobei Adresse 1 und Adresse 2 zusammengefügt zurückgegeben werden. Ich habe ein Objekt, das diese mit print_rAnalysieren von Informationen aus PHP-Objekt

a:2:{ 
    s:18:"_gravity_form_lead";a:16:{ 
     s:4:"19.1";s:28:"Stamford PD Extra Duty Order";s:4:"19.2";s:5:"$0.00";s:4:"19.3";s:0:"";s:3:"9.1";s:16:"3 Columbus Place";s:3:"9.2";s:5:"Apt 1";s:3:"9.3";s:0:"";s:3:"9.4";s:11:"Connecticut";s:3:"9.5";s:0:"";s:3:"9.6";s:13:"United States";i:22;s:14:"(203) 123-4567";i:12;s:10:"2016-05-24";i:13;s:8:"12:35 am";i:20;s:8:"8|584.64";i:11;s:9:"MH6151684";i:21;s:1:"3";i:18;s:7:"1753.92";}s:18:"_gravity_form_data";a:15:{s:2:"id";s:1:"6";s:13:"display_title";b:0;s:19:"display_description";b:0;s:25:"disable_woocommerce_price";s:3:"yes";s:12:"price_before";s:0:"";s:11:"price_after";s:0:"";s:20:"disable_calculations";s:2:"no";s:22:"disable_label_subtotal";s:3:"yes";s:21:"disable_label_options";s:3:"yes";s:19:"disable_label_total";s:2:"no";s:14:"disable_anchor";s:2:"no";s:14:"label_subtotal";s:8:"Subtotal";s:13:"label_options";s:7:"Options";s:11:"label_total";s:5:"Total";s:8:"use_ajax";s:2:"no"; 
    } 
} 

ich unsere s analysieren will zurück: 16 und s: 5, aber ich bin nicht sicher, wie es zu tun. Jede Hilfe ist willkommen

EDIT

unserialisierten string:

array ('_gravity_form_lead' => array ('19.1' => 'Stamford PD Extra Duty Order', '19.2' => '$0.00', '19.3' => '', '9.1' => '3 Columbus Place', '9.2' => 'Apt 1', '9.3' => '', '9.4' => 'Connecticut', '9.5' => '', '9.6' => 'United States', 22 => '(203) 123-4567', 12 => '2016-05-24', 13 => '12:35 am', 20 => '8|584.64', 11 => 'MH6151684', 21 => '3', 18 => '1753.92',), '_gravity_form_data' => array ('id' => '6', 'display_title' => false, 'display_description' => false, 'disable_woocommerce_price' => 'yes', 'price_before' => '', 'price_after' => '', 'disable_calculations' => 'no', 'disable_label_subtotal' => 'yes', 'disable_label_options' => 'yes', 'disable_label_total' => 'no', 'disable_anchor' => 'no', 'label_subtotal' => 'Subtotal', 'label_options' => 'Options', 'label_total' => 'Total', 'use_ajax' => 'no',),) 
+2

Da Sie Ihre Daten serialisieren konnten, sollten Sie in der Lage sein, sie zu deserialisieren ... nein? Haben Sie zumindest eine Idee, wofür diese Darstellung steht? – Arcesilas

+0

Um ehrlich zu sein, ich bin nicht einmal sicher, was diese Zeichenfolge von Text ist, verwende ich Gravitationsformen + Woocommerce, um zusätzliche Daten zu bringen, wenn eine Person einen Kauf tätigt, aber die seltsame Sache ist, dass es Adresse und Adresse 2 Felder in 1 verkettet Zeichenfolge. Diese Repräsentationen sind nur die Eingangsdaten für dieses Formular. –

+1

Um Arcesilas Kommentar zu ergänzen, zeigen Sie uns bitte die Ausgabe von 'var_export (unserialize ($ var));'. –

Antwort

1

Sie haben die Array unserialize die Daten zu erhalten, die Sie benötigen. Gefällt mir:

$formData = unserialize($var); 

// This is Address1 
echo $formData['_gravity_form_lead']['9.1']; 

echo "<br/>"; 

// This is Address2 
echo $formData['_gravity_form_lead']['9.2']; 
4

Du machst das auf die harte Tour!

Dies ist WordPress. Sie müssen keinen Datensatz erstellen, unserialisieren, versuchen, die Struktur zu erraten usw.

Verwenden Sie stattdessen die Funktionen get_option oder get_postmeta, um die gewünschten Informationen zu erhalten.

Weiter gibt es Dokumentation für WooCommerce und Gravity Forms, die erklären, wie Sie die Informationen erhalten, die Sie suchen - ABER, das ist ein bisschen von XY Problem - Sie haben gefragt, wie man ein Array analysiert (Serialisiert) - Aber wirklich versuchen Sie etwas anderes zu tun. Sie sollten diese Frage und nicht die Details dieser Frage stellen.

Wenn Sie müssen dies manuell tun, verwenden Sie nicht unserialize. Verwenden Sie stattdessen die WordPress-Funktion maybe_unserialize

Schließlich ist die Art und Weise, wie Gravity Forms Datensätze speichert, ein großes Ärgernis. Es ist sehr schwierig, die Art und Weise, wie es gespeichert ist, dem "Formularfeld" zuzuordnen, das Sie im Formular eingerichtet haben - es sei denn, Sie verwenden das Gravity Forms API, was es etwas besser macht.

+1

Zustimmen 200% (mindestens). Danke für den Link zum XY-Problem! – Arcesilas

+0

Hey Cale, Danke für die Köpfe hoch. Es ist komisch, weil dies ein Mesh zwischen Gravity-Formularen und WooCommerce ist. Also versuche ich, die richtigen Hooks zu finden, um die Daten zu bekommen, was mich verrückt macht.Ich werde versuchen, ein wenig tiefer in beide Dokumentationen zu graben, um zu sehen, was der bessere Ansatz ist und es anzuwenden, sobald ich mehr Wissen habe –

+2

@DavidMoran - glücklich zu helfen, wenn Sie eine höhere "Frage", die etwas wie sagt " wenn ein Benutzer eine Bestellung aufgibt, verwendet GF X mit dem [was auch immer] -Plugin, und ich möchte den Foobar-Eintrag, den GF speichert, erhalten "(oder was auch immer passiert!) –

Verwandte Themen