2

それが私の構文であることは知っていますが、問題が見つかりません。

私は通常、ループを使用して、json キーを次のような変数に変換します。

送信済JSON: [{\"name\":\"dolly\",\"page\":\"A4\"}]

$object = json_decode(stripslashes($_POST['myData']));

foreach ($object[0] as $key => $value)
{   
    $$key = preg_replace('/--+/',' ',$value);   
}

たとえば、$page = "A4" があります。正常に動作します。

さて、そのようにループするのではなく、「ページ」キー (毎回そこにあることがわかっている) にアクセスし、それ以外は無視したいだけです。

これでうまくいくと思ったのですが、「stdClass 型のオブジェクトを配列として使用できません」というエラーが表示されます。

$object = json_decode(stripslashes($_POST['myData']));

$page = $object[0]['page'];

これはエラーにはなりませんが、何も返しません:

$object = json_decode($_POST['myData']);

$p = $object[0]->page;

同様に

$p = $object->page;

私はここで何を台無しにしていますか?

ご覧いただきありがとうございます。

4

2 に答える 2

1

アプローチを組み合わせる必要があります;-)

$object = json_decode(stripslashes($_POST['myData'])); // note the stripslashes() here!
$p = $object[0]->page;

エンコードされたオブジェクトは配列であるため、コードの 2 番目のスニペットで行ったように、最初の要素を取得してからオブジェクト プロパティを取得する必要があります。申請するのを忘れただけstripslashes()で、json_decode()失敗しました。

于 2013-09-24T16:36:07.260 に答える