2016-05-13 3 views
1

フォームで情報表示を解析しようとすると助けが必要です。現在、基本配列を使用する場合、アドレスは "3 Columbus PlaceApt1"として返され、アドレス1とアドレス2が一緒に結合されて返されます。 16とs:5しかし、イムそれを行う方法がわからない私は、私たちのを解析したいしますprint_rPHPオブジェクトからの情報の解析

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"; 
    } 
} 

でこれを返すオブジェクトを作成しました。すべてのヘルプはEDIT

高く評価され

シリアライズ文字列:

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

データをシリアル化することができたので、シリアル化できません...いいえ?この表現が何を表しているか、少なくともあなたは考えていますか? – Arcesilas

+0

正直言って、その文字列が何であるかわからないのですが、人が買い物をしたときに重力フォーム+ woocommerceを使用して余分なデータを持っていますが、奇妙なことは、AddressとAddress 2フィールドを1に連結するということです文字列。これらの表現はそのフォームのエントリデータです。 –

+1

Arcesilasのコメントを補完するには、 'var_export(unserialize($ var));'の出力を表示してください。 –

答えて

1

あなたはあなたが必要なデータを取得するために、配列をアンシリアライズする必要があります。このように:

$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

これは難しいことです。

これはワードプレスです。レコードを取得し、構造をシリアライズしたり、構造を推測したりする必要はありません。

代わりにget_optionまたはget_postmeta関数を使用して、必要な情報を取得します。

さらに、あなたが探している情報を取得する方法を説明するWooCommerceとGravity Formsのドキュメントがありますが、これはXY Problemのビットです - 配列の解析方法(シリアライズされたもの)本当にあなたは何か他のことをしようとしています。あなたはこの質問の詳細ではなく、その質問をするべきです。

の場合は、を手動で入力する必要があります。unserializeを使用しないでください。代わりに、WordPress関数を使用してください。maybe_unserialize

最後に、Gravity Formsのレコードの保存方法は大きな迷惑です。 Gravity Forms APIを使用しない限り、フォームに設定した「フォームフィールド」に格納されている方法をマップするのは非常に難しく、いくらか改善されています。

+1

200%(少なくとも)に同意します。 XY問題に関するリンクをありがとう! – Arcesilas

+0

こんにちはケール、頭のおかげで。これはGravityのフォームとWooCommerceのメッシュなので、データを取得するための正しいフックを見つけようとしていることが私を狂ってしまいます。私はより良いアプローチが何であるかを知るために両方の文書を少し深く掘り下げようとします。もっと知識があればそれを適用してください –

+2

@DavidMoran - あなたが "ユーザーが注文したとき、GFは[何でも]プラグインを使用してXを行い、GFが保存するfoobarレコードを取得したいのです。 "(または実際に何が起こっているか) –

関連する問題