• 締切済み

phpのECHOが出力されない:wordpress

A B C "text" というJSONデータのCを画面に出したい時、 echo $obj['A']['B']['C']; もしくは echo $obj->A->B->C; という文をphpの中に書き込んだのですが、 echo ”Halloworld”とかは出るのに、変数になると出ません。 ちなみにfunction.phpでショートコードから呼び出すファイルに記述しています。 何が間違っているのでしょうか。

  • ferra
  • お礼率70% (627/886)
  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

  • akauntook
  • ベストアンサー率19% (295/1481)
回答No.1

質問を拝見したところ、ケアレスミスか認識の間違いがあると思いました。 まず、大文字と小文字は違うものです。 jsonデータはテキストデータなので、オブジェクトになっているか確認が必要だと思います。 >echo ”Halloworld”とかは出るのに、 これを言うなら、Hello World。 こちらから単純なミスが多いと予測しました。 >ちなみにfunction.phpでショートコードから呼び出すファイルに記述しています。 どのファイルか曖昧です。 WordPressのルートディレクトリからのパスで明示して下さい。 変数の中身を確認する場合には、 var_dumpを使いましょう。

ferra
質問者

お礼

ありがとうございました! その通りです。ケアレスミスが多いタイプで、しかも初心者です。。 var_dump(json_decode($data,true)); や var_dump(json_decode($data)); でWordpress上に出力表示は出来ているんですが、 $obj = json_decode($data); echo $obj->calendar_months->0->abbr_name; とか $objb = json_decode($data, true); echo $objb['calendar_months']['0']['abbr_name']; しても出力してくれません。JSONからデータを取り出した事がないので 何とも言えませんが、問題はEchoの使い方とか認識にありそうです。 //ここから ←function.phpに書き込み function Include_my_php($params = array()) { extract(shortcode_atts(array( 'file' => 'default' ), $params)); ob_start(); include(get_theme_root() . '/' . get_template() . "/$file.php"); return get_template(); return ob_get_clean(); } add_shortcode('myphp', 'Include_my_php'); //ここまで ショートコードはコチラです↓。 [myphp file="test"]​ で、test.php に書き込んだメイン処理は動いているのですが、 Echoの使い方が間違っていたようです。 よく分からないのですが、何故か動きました。。。うーん。。。 とりあえずJSONで1個のデータを取り出せたので、これで自己解決なのかも。一個取り出すのに初心者だと3日かかる・・・

関連するQ&A

  • echoの出力がうまくできない

    echoを使ってできないことがあり、自力解決ができないでいます。 お分かりになる方いらっしゃれば解決方法をご教授願います。 【やりたいこと】 WordPressでphpをカスタマイズしています。 その中で下記のことをやろうとしています。 echo '<a href="' . the_permalink() . '">' . the_title() . '</a>'; 【期待する結果】 下記のような感じです。WordPressの関数?の戻り値が展開されて <a href="aaa.html">bbb</> 要はリンクが張られている状態を作りたいのですが、現在の結果は下記のようになります。 aaa.htmlbbb とリンクが張られずにそのまま文字列が表示されてしまいます。 Fifrebugで確認すると、なぜか上記文字列の下に <a href=""></a> と入れられているのがわかりました。 試しにWordPressの関数の戻り値を使わず下記(ハードコード)にすると echo '<a href="' . 'zzz.html' . '">' . 'test' . '</a>'; ただしくリンクが張られています。 また関連するかはわかりませんが、戻り値の扱い方がおかしいのかも判断して 下記のようにしました。 $title = the_title(); 変数に入れるつもりが、なぜかこれが、echoがされた状態になり、(上記のコードだけで)プレビュー画面でタイトルが表示されています。 他にはヒアドキュメントでやっても同じような結果となり、原因がわかりません。 もともとは <a href="<?php the_permalink( ); ?>"><?php the_title(); ?></a> で書いてあったコード(正常に動作)をIF文などの条件が必要になり、(上記の書き方では私の知識ではわかりづらく) <?php ?> のようなブロック単位?に書き直しているタイミングで発生しました。 当方はPerl等メインでやっていますが、PHPは初心者です。ネットで検索したサンプルなどを手直しして使っているレベルです。 識者の方お願いします。

    • ベストアンサー
    • PHP
  • PHPでJSONを扱うときに配列の参照について

    Web ad Fortune http://jugemkey.jp/api/waf/api_free.php という占いのAPIをPHPにて使おうと思い、 JSON形式で情報が帰ってくるようなので JSONについて調べて json_decode()関数を使うことにしました。 しかし、いまいち配列からのデータ参照ができません。どういうことかというと、 牡羊座のランクを取り出したいときに 【ソース】 <?php $json = file_get_contents("http://api.jugemkey.jp/api/horoscope/free/2009/02/27","r"); $obj = json_decode($json); echo "<pre>"; print_r($obj->horoscope->2009/02/27[0]["rank"]); echo "</pre>"; ?> としても何も表示されません。 ちなみに、print_rの部分を print_r($obj->horoscope); とすると http://nanigashi.biz/json.php のように表示されます。 配列からの情報の読み込み(データ参照)がわかりません。 教えてください。

    • ベストアンサー
    • PHP
  • phpで以下のコードが次の認識であっているかどうか

    phpで以下のコードが次の認識であっているかどうかおしえてください <?php function say_hello($greeting) { echo $greeting."\n"; }; say_hello("Good morning"); say_helloというワードにfunctionで関数を定義している echoは表示させるための関数だから、 変数$greeting に表示させるという能力をつけさせている say_helloという関数が定義されて、その能力はまるかっこの中の$greetingというものの能力を使う。$greetingの能力はechoさせる能力だから、 A=B B=Cならば A=Cの関係から say_helloはechoの能力を持っている したがって、say_helloによって ("Good morning") が表示される この認識であっていますか?

    • ベストアンサー
    • PHP
  • phpのパス指定

    初めてphpを触っています。 いくつかの処理を外部ファイルにしたいのですが パスの指定が悪いのか、同じ階層に置いたり、いろいろ試してもfatal error ばかりです。 どこが悪いのか、教えていただけないでしょうか? サンプルとして、moto.phpのなかのincludeフォルダー内の外部ファイル:func.phpを実行することとします。 moto.php <?php require "./include/func.php"); $a = 2; $b = 1; $c = $a - $b * $a; echo return_word($a); echo "<br>"; //改行 echo return_word($b); echo "<br>"; //改行 echo return_word($c); ?> func.php <? php function return_word ( $data ){ if ( $a==1){ return "a"; }else if ($a==2){ return "b"; }else{ return "c"; } } ?> コマンドラインから php moto.php を実行すると <? php function return_word ( $data ){ if ( $a==1){ return "a"; }else if ($a==2){ return "b"; }else{ return "c"; } } ?> Fatal error: Call to undefined function return_word() in C:\xxxxxx\php\moto.php on line 9 となってしまいます。 外部ファイルは見えているようなのに、どうして関数がundefined になってしまうのでしょうか? phpの基本的なことなのかもしれませんが よろしくアドバイスお願いできればと思います。

    • ベストアンサー
    • PHP
  • echoの出力に関して

    シェルが以下の順番で呼ばれる場合に、AとBのechoのみ出力して Cのechoは出力しないといった方法はありますでしょうか? (任意でechoの出力を抑制する方法) set echo off見たいなもの。 shellA->shellB->shellC 実は、なぜかShellCないのechoが出ないようになっているのですが 何故でないのか分からず困っています。

  • echoの区切り方(コンマ又はピリオド)?

    echoの正しい記述方法についてご質問します。 echo で出力する文字列にの間に変数を記述する場合、変数は「,」(コンマ)で区切るのでしょうか?それとも「.」(ピリオド)で区切るのでしょうか?または、「,」でも、「.」でも、どちらでも良いのでしょうか?「,」で区切る場合と「.」で区切る場合の使い分けが分かりません。 例1(「,」で区切る): <?php $var = "変数"; echo '$varは「', $var, '」です'; ?> 例2(「.」で区切る) <?php $var = "変数"; echo '$varは「' . $var. '」です'; ?> 「.」で区切った場合も上記のように行を変えればちゃんと出力されます(これって正しい記述?)。 また、上記よりもっと良い記述方法があれば、お教え下さい。 この質問の内容に関して詳細な情報が記載されているサイト等をご存知でしたら、お教え下さい。 よろしくお願いします。

    • 締切済み
    • PHP
  • echoについて

    echoの使い方について教えてください。 echo ($author!='' ? "$author. " : '') PHPのリファレンスにあるechoの内容を見ましたが、上のような使い方については見当たりませんでした。 この記述は、どのように解釈したらいいんでしょうか? またこの記述方法で実行した場合、出力結果は同じになりますか? これと似た構文でC言語にもありますか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • ajaxで取得した配列の取り扱い

    こんにちは。 jqueryとphpを利用して、ajaxの練習をしているのですが、 受け取った配列の扱いではまってしまっています。 javascript.js $.ajax({ type : "post", url : "http://localhost/*****.php", data : post_data, datatype : "json", success :function(data,datatype){return_data(data);}, error : error_ajax(), }); php側では、受け取ったデータに応じて多次元配列を作り、jsonに変換してechoしています。 そして以下が成功時に実行する関数です。 function return_data(obj){ //配列topic以下を処理する関数 disp_topic(obj['topic']); //配列topic以下を処理する関数 dixp_tags(obj['tags']); } すると、obj['topic']が見つからないというエラーが出ます。 firebugsで見てみると、function return_dataの引数objには、jqueryがjsonからjavascriptのオブジェクトへ変換処理した配列が渡っているようです。。 引数objの値は以下のようになっていいます。 { "topic":  [{"tagno":"27","tags":"***"}], "tags":  [{"tagno":"27","tags":"****","count":"6"},   {"tagno":"29","tags":"****","count":"4"}, {"tagno":"1","tags":"****","count":"3"}, {"tagno":"9","tags":"****","count":"1"}] } 変数obj内のtopicに応じた配列と、tagsに応じた配列をそれぞれ取り出し、それぞれの関数で処理したいのですが、これを取り出すのにはどのようにしたらよいのでしょうか。 var array = obj['topic']; などと散々やってみたのですが、2日間解決できず・・・。 よろしくお願い申し上げます。

  • Jquery.PHPファイルのechoが表示されない

    初めまして、Jqueryのloadについて教えてください。 環境は、vista,eclipse3.5 ,php5.0 JQuery1.4.2,xmapp,IE8です ファイルはすべて同じ階層にあります。 PHPファイル単体で表示させると、 正常にecho内'aaa'が表示されるのですが、 JQUERYを介してみると、 phpファイルの内部echo'aaa'が表示されません。。。 <?php ?>から外しhtmlであればloadすることはできます。 どなたか改善策ご存じでしたら、よろしくお願いしたします。 <!--html--> <html><head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="text.js"></script> <title></title></head> <body> <li><a href="javascript:changetext()">リンク</a></li> <div id="box">ここに表示</div> </body> </html> //text.js function changetext() {$("#box").load("testo.php");} //testo.php <?php echo 'aaa'; ?>

  • getJSONで受け取れるよう出力するには?

    ■前提 ・$.getJSONでAPIからデータ取得するサンプルがあります ・この時、第1引数のURLを叩くと、データが表示されます $.getJSON('http://hoge … &callback=?') .error( ajaxError ) .success(function( data ){ ・動作確認のため、「第1引数のURLで表示されたデータ」を取得(コピペ)して、「piyo.php」としてアップロードしてみました ■質問 ・$.getJSON第1引数を「piyo.php」へ変更すると、同じようにデータ取得できると思ったのですが、うまくいきません ・何故でしょうか? ・「json値」をサーバが返すようにすれば良いのでしょうか? ・それはどうやるのでしょうか? ・「echo json_encode?」「header('Content-Type:?」それとも、拡張子がjsonじゃないといけないのでしょうか?

    • ベストアンサー
    • AJAX

専門家に質問してみよう