0

初めてここに投稿しました。

php、mysql、JSONは初めてで、問題が発生しているので、間違った方法で問題に取り組んでいる可能性があるので、ご意見をお聞かせください。

基本的に、私がやろうとしているWebサイトには、別のサーバーにいくつかの情報があり、その情報をJSONで取得します。

コードは次のとおりです。

//Start of JSON Main Content Fetch + Main Content Render 
//JSON send_recv of menu array. Assign results to $main_content_b_render
$main_content_fetch=send_recv("menu", array("id" => "17", "fetchContent" => TRUE));


//Renders menu from JSON results.
function render_main_content($main_content_fetch)
{

//Start of processing $menu_result
$main_content_b_render = $main_content_fetch['content'];
print_r($main_content_fetch);
    }
    render_main_content($main_content_fetch['results']);
    ?>

他のサーバーから実際に取得できるのは次のとおりです。

Array ( [id] => 17 [name] => Accessories [reference] => [content] => Array ( [0] => Array ( [type] => Heading1 [content] => BLAH BLAH BLAH TXT TXT TXT [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accblurb ) [1] => Array ( [type] => Image [align] => Left [image] => http://URL.../image/43/webcontent/accshop11.jpg [thumb] => http://URL....com.au/image/thumb/100x100/43/webcontent/accshop11.jpg [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accshop1.jpg ) ) )

配列値を変数に割り当てることはできますが、最初の値のみが割り当てられるため、たとえば次のようになります。

これを関数に入れてエコーアウトすると$id= $ main_content_fetch ['content']; エコー$id;

返されるのは「配列」だけです。実際に必要なのは、返された情報の後半にある「BLAH BLAH BLAH TXT TXT TXT」です。実際には、最後の括弧のセットにあるすべてのものです。

([type] => Heading1 [content] => BLAH BLAH BLAH TXT TXT TXT [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accblurb)[1] => Array([タイプ]=>画像[整列]=>左[画像]=> http:// URL ... / image / 43 / webcontent / accshop11.jpg [thumb] => http:// URL....com。 au / image / thumb / 100x100 / 43 / webcontent / accshop11.jpg [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accshop1.jpg)

私がやりたいのは、基本的に私が取得したすべてのものをそのまま変数に割り当てることができるようにすることです。私は自分が欲しいものを簡単に選ぶことができると思うので..そして私はそれをする他の方法を知りません:/

少し漠然としていて申し訳ありませんが、自分自身を説明するのはあまり得意ではありませんが、誰かが私が話していることを理解して助けてくれることを願っています。

4

5 に答える 5

1

これがあなたの機能です。print_rをreturnに置き換えました

function render_main_content($main_content_fetch)
{

//Start of processing $menu_result
$main_content_b_render = $main_content_fetch['content'];
return $main_content_fetch;
}

この関数をこのように呼び出すとしましょう。これで、この方法で個々の変数に配列を割り当てることができます

$data = render_main_content($parameter);
$id = $data['id'];
$name = $data['name'];
......

これがお役に立てば幸いです。必要なのは、インデックス付きの配列変数を目的の変数に割り当てることだけです。

于 2012-05-09T10:30:51.837 に答える
0

あなたは次のようなものを使うことができます

foreach (array_expression as $key => $value ) {
    // TODO - probably need a recursive version
    $$key = $value;
}

配列をトラバースするとき、そのステートメントを使用すると、コードに新しい変数を作成できます。

ただし、原則として、他のサーバーから取得する出力の形式に依存しないでください。私の推奨は、入力から必要な情報を明示的に抽出することです。それをそのまま取得してにインポートするのではありません。

たとえば、あなたは

$id = input['id'];

次に、すべてが適切に割り当てられているかどうかを確認し、エラーをキャッチできます。

于 2012-05-09T10:30:10.500 に答える
0

以下のphpコードを使用してこの問題を解決できます

$ value){$$ key = $ value; }//または....foreach($ user as $ key => $ value){$ {$ key} = $ value; }?>
于 2012-05-09T10:51:55.160 に答える
0

申し訳ありませんが、ネストされた配列があることがわかりました。$ main_content_fetch ["content"] [0] ["content"]で必要なアイテムにアクセスしてみませんか?とにかくprint_r($ arr、TRUE)を使用すると、実際のアイテムを印刷して、処理している配列の構造を確認できます。

私があなたを正しく理解していれば、BLA BLA BLAテキストを取得するには、コードは次のようになります。

//Start of JSON Main Content Fetch + Main Content Render 
//JSON send_recv of menu array. Assign results to $main_content_b_render
$main_content_fetch=send_recv("menu", array("id" => "17", "fetchContent" => TRUE));


//Renders menu from JSON results.
function render_main_content($main_content_fetch)
{
     //Start of processing $menu_result
     $main_content_b_render = $main_content_fetch['content'];

     //return the second level "content"
     return $main_content_b_render[0]['content'];
}

$content = render_main_content($main_content_fetch['results']);
print $content;
?>
于 2012-05-09T11:02:18.123 に答える
-1

最初にprint_r($ arr、TRUE)を使用して、デバッグ時に配列を出力します。これは非常に役立ちます:-)(TRUEフラグを忘れないでください!)。配列内の任意のアイテムにアクセスできますが、$main_content_b_renderではなく$main_content_fetchを出力しているように見えますか?

于 2012-05-09T10:32:55.853 に答える