web-dev-qa-db-ja.com

それはどのようなデータですか?

WordPressRegistrationMagicと呼ばれるplug-inを使用します。そして、フロントエンドでさらに使用するために保存されたdataにアクセスする必要があります。

私はtablesMySQLを探していて、そのようなdatausersを見つけました:

a: 5: {
  i: 6;O: 8: "stdClass": 3: {
    s: 5: "label";s: 10: "First Name";s: 5: "value";s: 6: "Danilo";s: 4: "type";s: 5: "Fname";
  }i: 7;O: 8: "stdClass": 3: {
    s: 5: "label";s: 9: "Last Name";s: 5: "value";s: 5: "Teste";s: 4: "type";s: 5: "Lname";
  }i: 5;O: 8: "stdClass": 3: {
    s: 5: "label";s: 5: "Email";s: 5: "value";s: 26: "[email protected]";s: 4: "type";s: 5: "Email";
  }i: 8;O: 8: "stdClass": 3: {
    s: 5: "label";s: 7: "Website";s: 5: "value";s: 17: "http://teste.com/";s: 4: "type";s: 7: "Website";
  }i: 9;O: 8: "stdClass": 3: {
    s: 5: "label";s: 43: "Do you agree with our terms and conditions?";s: 5: "value";s: 2: "on";s: 4: "type";s: 5: "Terms";
  }
}

誰かが私がそれが何であるかを理解するのを手伝うことができますか?それはJSONですか?ループなどでキャッチするなど、それを使って作業することは可能ですか。

これが再投稿である場合は申し訳ありません。これは私のWordPressデータベースで常に見られますが、その内容を把握することはできません。

1

これは 直列化された 文字列です。 これがその内容の良い説明 です。

PHP配列、オブジェクト、またはその他の複雑なデータ構造は、実行中のPHPスクリプトの外部で転送または格納、あるいは使用することはできません。スクリプトの1回の実行を超えてそのような複雑なデータ構造を保持したい場合は、それをシリアル化する必要があります。これは、データベース、テキストファイル、ソケットなど、PHP以外のもので処理できる「下位共通分母」に構造を入れることを意味しています。標準のPHP関数serializeは、そのようなことを表現するための単なるフォーマットです。データ構造をPHPに固有の文字列表現にシリアル化し、PHP unserializeを使ったオブジェクトJSONやXMLなど、他にも多くの形式があります。

それでもしあなたがPHP配列、オブジェクトなどを持っているなら、

$array = array(
    'key value' => array(
        'more info' => array(1,2,3)
    ),
    'another key' => array(
        'and so on' => '<span>so on</span>'
    )
);  

PHPでは、 serialize()unserialize() を使うことができます。それを文字列に変換します。次のようなスクリプトで自分を見ることができます。

$storeArray = serialize($array);

echo "<pre>".print_r($storeArray,true)."</pre>";

$restore = unserialize($storeArray);

echo "<pre>".print_r($restore,true)."</pre>";

UPDATE:そして@TomJNowellが思い出したように(ありがとう!):

保存のためにオブジェクトや配列をAPIに渡すと、WPはその場で自動シリアル化と逆シリアル化を行います。

たとえば、Options APIなどのWordpressでは、配列をadd_option()に渡すと、配列は_optionsテーブルにシリアル化された文字列として保存されます。 get_option()を使用して値を取得すると、自動的に非シリアル化されます。取得した値は、渡した元の$配列と同じものになります。

add_option('my_array', $array);

$my_array = get_option('my_array');

echo "<pre>".print_r($my_array,true)."<pre>";
2
David Sword