PHPのプログラムでエラーが出て実行できない問題の解決方法

このQ&Aのポイント
  • YahooのAPIで知恵袋の質問を検索するサンプルプログラムで、エラーが発生して実行できません。
  • エラーの原因を特定して修正すれば、プログラムを正常に実行することができます。
  • PHPのプログラムで質問の検索を行い、結果を表示する方法については、YahooのAPIのドキュメントを参考にしてください。
回答を見る
  • ベストアンサー

PHPのプログラムで質問です。

PHPのプログラムで質問です。 yahooのAPIで知恵袋サンプルプログラムで知恵袋質問でもサイトをコピーしてきたんですが、エラーが出てきて実行できません。 どのように変更すれば実行できますか? <?php * http://e.developer.yahoo.co.jp/webservices/register_application */ $appid = '<dj0zaiZpPVZFUU5lWnQxM3dSSCZzPWNvbnN1bWVyc2VjcmV0Jng9ZTY->'; // <-- ここにあなたのアプリケーションIDを設定してください。 $CHIE_SEARCH_API_HOST = 'chiebukuro.yahooapis.jp'; $CHIE_SEARCH_API_URL = '/Chiebukuro/V1/questionSearch'; $CHIE_SEARCH_API_APPID = $appid; function escapestring($str) { return htmlspecialchars($str, ENT_QUOTES); } print<<<EOM <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8"> <title>知恵袋デモサイト - 質問検索(php)</title> </head> <body> <h1>知恵袋デモサイト - 質問検索(php)</h1> EOM; print '<form action="./'. basename($_SERVER['SCRIPT_NAME']) .'">'; print '<input type="text" name="query" value="' . escapestring($_GET['query']) . '">'; print '<input type="submit" value="search">'; print '</form>'; $responseXML = ''; { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://${CHIE_SEARCH_API_HOST}${CHIE_SEARCH_API_URL}?appid=${CHIE_SEARCH_API_APPID}&query=".urlencode($_GET['query'])); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $responseXML = curl_exec($curl); curl_close($curl); } { $xmlObj = simplexml_load_string($responseXML); foreach($xmlObj->{'Result'}->{'Question'} as $que) { print("<li>{$que->{'Content'}}<br><a href=\"{$que->{'Url'}}\">{$que->{'Url'}}</a>\n"); } } print<<<EOM <hr /> <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet --> <a href="http://developer.yahoo.co.jp/about"> <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17.gif" width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px"></a> <!-- End Yahoo! JAPAN Web Services Attribution Snippet --> </body> </html> EOM; ?>

  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

空白の返し方が指定していないことが原因です。 使い方次第で邪魔になったりすることの方が多いからだと思われます。 具体的な修正は↓ 33行目に if("" !== $_GET['query']){ 48行目に } 全体を書くと ↓ <?php /** * Yahoo! JAPAN Web APIのご利用には、アプリケーションIDの登録が必要です。 * あなたが登録したアプリケーションIDを $appid に設定してお使いください。 * アプリケーションIDの登録URLは、こちらです↓ * http://e.developer.yahoo.co.jp/webservices/register_application */ $appid = ''; // <-- ここにあなたのアプリケーションIDを設定してください。 $CHIE_SEARCH_API_HOST = 'chiebukuro.yahooapis.jp'; $CHIE_SEARCH_API_URL = '/Chiebukuro/V1/questionSearch'; $CHIE_SEARCH_API_APPID = $appid; function escapestring($str) { return htmlspecialchars($str, ENT_QUOTES); } print<<<EOM <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8"> <title>知恵袋デモサイト - 質問検索(php)</title> </head> <body> <h1>知恵袋デモサイト - 質問検索(php)</h1> EOM; print '<form action="./'. basename($_SERVER['SCRIPT_NAME']) .'">'; print '<input type="text" name="query" value="' . escapestring($_GET['query']) . '">'; print '<input type="submit" value="search">'; print '</form>'; if("" !== $_GET['query']){ $responseXML = ''; { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://${CHIE_SEARCH_API_HOST}${CHIE_SEARCH_API_URL}?appid=${CHIE_SEARCH_API_APPID}&query=".urlencode($_GET['query'])); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $responseXML = curl_exec($curl); curl_close($curl); } { $xmlObj = simplexml_load_string($responseXML); foreach($xmlObj->{'Result'}->{'Question'} as $que) { print("<li>{$que->{'Content'}}<br><a href=\"{$que->{'Url'}}\">{$que->{'Url'}}</a>\n"); } } } print<<<EOM <hr /> <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet --> <a href="http://developer.yahoo.co.jp/about"> <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17.gif" width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px"></a> <!-- End Yahoo! JAPAN Web Services Attribution Snippet --> </body> </html> EOM; ?> あなたのアプリケーションIDを入れて下さい

その他の回答 (1)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>エラーが出てきて実行できません。 せめて、どういうエラーが出てくるのかくらいは書いてください。 提示されたソースだと <?php * http://e.developer.yahoo.co.jp/webservices/register_application */ 2行目を削除していませんか? <?php /* * http://e.developer.yahoo.co.jp/webservices/register_application */ であるべきだと思います(でないと3行目がコメントとして扱われない)。 http://www.php.net/manual/ja/language.basic-syntax.comments.php あと(当然ですが)スクリプトのURLに対して?query=XXXXを付加してアクセスしていますよね(これがないと$_GET['query']で undefined indexになる)。

関連するQ&A

  • PHPのプログラムで質問です。

    yahooのAPIで知恵袋サンプルプログラムで知恵袋質問でもサイトをコピーしてきたんですが、エラーが出てきて実行できません。 どのように変更すれば実行できますか? これで解答いただいてアプリケーションIDを入れて実行したらエラーが出たためもう一度質問です。 Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /opt/lampp/htdocs/www/sample3.php on line 28 エラーはこのようなエラーです。 よろしくお願いします。 <?php /** * Yahoo! JAPAN Web APIのご利用には、アプリケーションIDの登録が必要です。 * あなたが登録したアプリケーションIDを $appid に設定してお使いください。 * アプリケーションIDの登録URLは、こちらです↓ * http://e.developer.yahoo.co.jp/webservices/regis … */ $appid = ''; // <-- ここにあなたのアプリケーションIDを設定してください。 $CHIE_SEARCH_API_HOST = 'chiebukuro.yahooapis.jp'; $CHIE_SEARCH_API_URL = '/Chiebukuro/V1/questionSearch'; $CHIE_SEARCH_API_APPID = $appid; function escapestring($str) { return htmlspecialchars($str, ENT_QUOTES); } print<<<EOM <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8"> <title>知恵袋デモサイト - 質問検索(php)</title> </head> <body> <h1>知恵袋デモサイト - 質問検索(php)</h1> EOM; print '<form action="./'. basename($_SERVER['SCRIPT_NAME']) .'">'; print '<input type="text" name="query" value="' . escapestring($_GET ['query']) . '">'; print '<input type="submit" value="search">'; print '</form>'; if("" !== $_GET['query']){ $responseXML = ''; { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http:// ${CHIE_SEARCH_API_HOST}${CHIE_SEARCH_API_URL}?appid= ${CHIE_SEARCH_API_APPID}&query=".urlencode($_GET['query'])); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $responseXML = curl_exec($curl); curl_close($curl); } { $xmlObj = simplexml_load_string($responseXML); foreach($xmlObj->{'Result'}->{'Question'} as $que) { print("<li>{$que->{'Content'}}<br><a href=\"{$que->{'Url'}}\">{$que-> {'Url'}}</a>\n"); } } } print<<<EOM <hr /> <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet --> <a href="http://developer.yahoo.co.jp/about"> <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17 … width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px"></a> <!-- End Yahoo! JAPAN Web Services Attribution Snippet --> </body> </html> EOM; ?>

    • ベストアンサー
    • PHP
  • Yahoo APIのXMLの取得について

    Yahoo APIのXMLで総数(totalResultsAvailable)を取得したいのですが、取得できません。 $url = "http://api.search.yahoo.co.jp/WebSearchService/xx/webSearch?appid=xxxxx&query=$query"; $xml= simplexml_load_file($url); $yahooxml=$xml->Result->Item ; $totalResults = $yahooxml->{totalResultsAvailable}; print_r ($totalResults); $urlは問題なく値が入ってるのですが、$totalResults ではSimpleXMLElement Object ( ) と返ってきてしまいます。どうすれば、$totalResults の値を取得できるのでしょうか?よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 初投稿です!javascriptで質問があります!

    こんにちは 最近jweb apiを勉強している学生です。 yahoo apiのキーフレーズ解析を用いて何か作ろうとしているのですが少し躓いてしまいました。 下記のプログラムはキーフレーズ解析のサンプルなのですが、このプログラムを一番スコアの高いものだけが表示されるようにしたいです。 どなたか知恵をお貸しいただけないでしょうか? よろしくお願いします。 //////index.html///////////////////////////// <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>キーフレーズ抽出(Yahoo! API使用)を試す - js do it</title> <meta name="Description" content="" /> <meta name="Keywords" content="" /> <link rel="stylesheet" type="text/css" media="screen,print" href="style.css" /> </head> <body> <!-- generated by: jsdo.it - http://jsdo.it/kjunichi/qpO3 --> <!-- Copyright kjunichi - http://jsdo.it/kjunichi --> <!-- Licensed under MIT License - http://www.opensource.org/licenses/mit-license.php --> <textarea id="targetText" rows="10" cols="45"></textarea> <input id="start" type="button" value="解析"> <div id="result"></div> <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet --> <a href="http://developer.yahoo.co.jp/about"> <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn1_125_17.gif" title="Webサービス by Yahoo! JAPAN" alt="Web Services by Yahoo! JAPAN" width="125" height="17" border="0" style="margin:15px 15px 15px 15px"></a> <!-- End Yahoo! JAPAN Web Services Attribution Snippet --> <script type="text/javascript" src="http://jsdo.it/lib/jquery-1.6.2/js"></script> <script type="text/javascript" src="index.js"></script> </body> </html> //////index.js////////////////////////////////////////////////////////////////// var apiBaseUrl = "http://jlp.yahooapis.jp/KeyphraseService/V1/extract?callback=?"; var appid = "opensesami"; $(function(){ $("#start").click(function() { //alert($("#targetText").val()); $.getJSON(apiBaseUrl, { "appid" : appid, "sentence" : $("#targetText").val(), "output" : "json" }, function(data) { //alert(data); $.each(data, function(item,score){ //alert(item); $("#result").append(item + "," + score + "<br>"); }); } ); }); });

  • YAHOO ウェブ検索Web APIを使ったプログラム

    perlのペーペープログラマーです とりあえず動けばOK的にしか作れないレベルです 現在YAHOO ウェブ検索Web APIを使ったプログラムを作成しています (プログラム、フォーム用、結果表示用のHTMLなどもutf-8で記述) 大体普通に動くのですが一部キーワードを使うとなぜか違う検索結果が返ってきます 例:SEOツール 1.返ってくるべきページ http://search.yahoo.co.jp/search?p=SEO%E3%83%84%E3%83%BC%E3%83%AB 2.なぜか受け取るページ http://search.yahoo.co.jp/search?p=SEO%83c%81[%83%8B なぜか2のshift-jisっぽいものが返ってきます 他のキーワードなどでは普通のUTF-8のページが返ってきます 文字化けなどはほとんどありません 正直まったく原因が分かりません いったい何をどうすれば良いのでしょうか? ソースは下記みたいな感じです &decode; #デコードサブルーチン use LWP::Simple; use XML::Simple; $url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=$appid&query=$in{'keyword'}"; $response = get($url); $xml = new XML::Simple; $yahoo_xml = $xml->XMLin($response); $tra = $yahoo_xml->{totalResultsAvailable}; $page = <<"EOF"; $tra EOF &page; #ページ表示サブルーチン $pageを表示 ちなみに文字化けは他プログラムでは発生していましたが解決しました 関連性があるのでしょうか? 問題 APIから帰ってきたものを@lineに入れてHTML表示 それ以外の変数文字列が文字化け 解決策 APIから返ってきたものをforeachでutf-8にデコードしたら他のものが普通に表示されました。 foreach (@line) {Jcode::convert($_, "utf8");} こんな感じです これは返ってきたものなので、そもそも返って来るものが違う場合もうお手上げです。 何がなにやら分かりません 上手に説明できませんでしたが、よろしくお願いいたします また教えてgooへの投稿に慣れていないもので至らない点あるかと思いますがご容赦ください

    • ベストアンサー
    • Perl
  • 他のクエリを保持したまま、ページ番号だけを変えたい

    検索ボックスに入力されたクエリを基に検索する、search.phpを作成しました。 queに格納されているキーワードを検索して、50件ずつ表示します。 このとき search.php?que=[検索キーワード]&cat=[検索カテゴリ]&page=1 で検索結果の1ページ目、 search.php?que=[検索キーワード]&page=2 で検索結果の2ページ目が表示されます。 ページ下部には 前へ 次へ とあり、それぞれページひとつ前、ページひとつ次のURLがあるのですが、このURLはクエリによって動的に変化します。 search.php?que=aaa&cat=abc&page=4 なら前へ:search.php?que=aaa&cat=abc&page=3 、 次へ:search.php?que=aaa&cat=abc&page=5 search.php?que=bbb?page=4 なら前へ:search.php?que=bbb?page=3 、 次へ:search.php?que=bbb?page=5 このように、それ以外のクエリを保持したまま、ページ番号だけを書き換えるにはどのようにすればいいのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのcURLによるログインについての質問

    PHPのcURLによるログインについての質問をさせて頂きます。 会員サイトでIDとPASSの入力を行い、ログインをしてページの移行していくPHPの コードを書いておりますが、途中ページで検索BOXのフォームにキーワードを入れて 次のページに移行する必要があるのですが、ページ移行ができない状況であります。 質問をさせて頂きたい内容ですが、フォームへの入力が必要となるため、 下記のコードの入力項目である【$params01】又は他の部分に どのような記述をすればよいかをご教授いただければと思います。 サンプルコードなどを掲載しているサイトなどで調べていましたが、 【$params01】の配列のkeyの部分がname属性としているようなのですが、 今回ログインをするページの検索BOXのフォームにはname属性は付けられていないようです。 よろしくお願いいたします。 【$params01】 $params01 = array( "dscrCdNm" => '7893', "marketCd" => '検索' ); $address01 = 'https://xxxxxxxxxx.co.jp/xxxxxxxxxx'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $address01); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $params01); $inputcode = curl_exec($ch) or die('error ' . curl_error($ch)); mb_language("Japanese"); $order_adress = mb_convert_encoding($inputcode, "UTF-8", "auto"); print($order_adress); 【検索BOXのフォームのHTML部分】 <div class="box-search-stock-01 mb00" > <fieldset> <legend>検索</legend> <p class="search"> <label for="ss-02">名前・コード</label>: <input type="text" name="dscrCdNm" value="" id="ss-02"> <input type="hidden" name="marketCd" value=""> <input type="hidden" name="industryCd" value=""> <input type="image" src="/member/images/btn-search-02.gif" class="roll img-ipad" value="検索" title="検索" /> <span style="padding: 0 0 0 20px;"><a href="javascript:void(0);" onclick="modalOpenAction();return false;">→詳細検索はこちら</a></span> </p> </fieldset> </div> <input type="hidden" name="offsetRow" value=""> <input type="hidden" name="trdKbn" value="10"> <input type="hidden" name="pageNo" value="1">

    • ベストアンサー
    • PHP
  • WebAPIのマッシュアップ方法について[Webサービスの作り方]

    マッシュアップというものをやりたいと思っています。 例えばAPIはYahooデベロッパー http://developer.yahoo.co.jp/search/webunit/V1/webunitSearch.html のものを使うとして、 リクエストURL http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch にリクエストパラメータを付加すると(サンプルコードです) http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch? appid=YahooDemo&query=%e6%b2%96%e7%b8%84&results=2 とするとこうなるということですが、 質問(1)まずquery=%e6%b2%96%e7%b8%84 という検索クエリーというものがよく分かりません。どう決めればよいのでしょうか? 質問(2)データベースについての知識はないのですが、もし必要ならどのような知識がどんなところに必要でしょうか?(例で示して下さると助かります) 質問(3)そして、このアドレスにアクセスするとXML形式で結果が返ってきますよね。これをどう使っていくのかいまいちよく分かりません。解説サイトを探してみたりもしましたが、抽象的で過程を省いているものが多く (1:○○する、2:○○する・・・と細かく説明されていればいいのですが・・)質問するに至りました。 関係ありそうな技術の現時点での到達度を書いておきます。 PHP、Perlなど:一から javascript:少しかじりました html:一通りはできます xml:一から HTTP関係:GET命令などで必要な情報をサーバからクライアントに持ってくるなどの簡単な知識。実際のやり方は一から 足りない部分は必要に応じて覚えていきたいと思っています、まずは簡単なものを一つ作りながら・・・と。どうぞよろしくお願いいたします。

  • function で json を POST

    37行目に PHP Fatal error: Cannot redeclare sendPostData() と出るのをどのように修正すれば、sendPostData がうまく回りますか。 <?php $total = 110; $test = 2; for ( $i = 0; $i <= ceil($total/100); $i++){ $data = array ( "filters" => array ( array ( "field" => "live_status", "type" => "equal", "value" => "past", ), array ( "field" => "start_time", "from" => "2014-03-12 00:00:00", "to" => "2014-03-13 00:00:00", "type" => "range", ) ), "from" => $test*$i, "issuer" => "apiguide", "join" => array ( 0 => "cmsid", 1 => "title", 2 => "community_id", 3 => "start_time", 4 => "live_end_time", 5 => "comment_counter", 6 => "score_timeshift_reserved", 7 => "provider_type", 8 => "tags", 9 => "member_only"), "order" => "desc", "query" => "一般(その他)", "reason" => "ma9", "search" => array ( "tags" ), "service" => array ( "live" ), "size" => $test, "sort_by" => "_live_recent", ); $encoded = json_encode($data, JSON_UNESCAPED_UNICODE); $url_send ="http://api.search.nicovideo.jp/api/"; function sendPostData($url, $post){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$post); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-type: application/json; charset=UTF-8')); $result = curl_exec($ch); curl_close($ch); return $result; } echo " " . sendPostData($url_send, $encoded); } ?>

    • ベストアンサー
    • PHP
  • ワードプレス、PHPについての質問です。

    はじめまして、みなさま、どうかお力添え頂けませんでしょうか? 現在、ワードプレスでドロップシッピングサイトを作っているのですが、商品一覧ページに自動で在庫を取得して表示するようにしたく、四苦八苦しております。 現在、いろいろ調べながらあと少しのところくらいまではきているようなのですが、以下のソースを実行しても商品一覧ページの一つ目の在庫状況の取得まではできても2つ目以降がエラーになってしまいます。 やりたいこととしては、カステムテンプレートを使って商品IDを取得し、商品一覧ページに在庫状況を出力させるような形です。 途中に<!--ここから-->と書いてある箇所が対象となります。その他の箇所はCSS部分等をある程度消していますが、ほぼそのままに書いてあります。 <?php while(have_posts()): the_post(); ?> <?php if ( has_post_thumbnail()) : ?>haveThumbnail<?php endif; ?>"> <?php if ( is_user_logged_in() == TRUE ) : edit_post_link('編集', '<span class="edit-link">[ ', ' ]    </span>');endif ?> <a href="<?php the_permalink(); ?>"> <?php $image_fish = wp_get_attachment_image_src( get_post_meta($post->ID, '商品画像をUpload', true),'thumbnail' );?> <img src="<?php echo $image_fish[0]; ?>" width="<?php echo $image_fish[1]; ?>" height="<?php echo $image_fish[2]; ?>"> <a href="<?php the_permalink(); ?>"><?php echo get_post_meta($post->ID, '商品情報', true); ?> <?php echo get_post_meta($post->ID, '価格', true); ?></a></div> </div> <?php    $days = 7; $today = date_i18n('U'); $entry = get_the_modified_date('U'); $kiji = date('U',($today - $entry)) / 86400 ; if( $days > $kiji ){ echo 'new'; } ?> <!--ここから--> <?php function get_content($url){ $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_HEADER, 0); ob_start(); curl_exec ($ch); curl_close ($ch); $string = ob_get_contents(); ob_end_clean(); return $string; } /* * もしもAPIから商品情報XML取得&パース */ $auth_code = "もしもAPI認証コード"; $article_id = get_post_meta($post->ID, 'item_id', true); $url = "http://api.moshimo.com/article/search?authorization_code=" .$auth_code ."&article_id=" .$article_id; $xml = get_content ($url); $data = simplexml_load_string($xml); $article = $data->Articles->Article; $stock_status= $article->StockStatus; $shop_id = $data->Shop->ShopId; if ($stock_status == 0){   //0は在庫切れ echo '在庫切れ'; }else{ ?> <input type="hidden" name="article_id" value="<?=$article_id?>"> <?php } ?> <!--ここまで--> <!-- [ /.entryTxtBox ] --> </div><!-- [ /.infoListBox ] --> <?php endwhile; ?> どこかソースがおかしいとは思うのですが、どこをどう直せば良いかわかりませんでした。 なぜ1回取得しただけで止まってしまうのかわからず、また、エラーとしてはfunctionの箇所を指摘されているようです。 ずーっと考えていたのですが、全く前に進めず、大変お恥ずかしいお話しですが、何卒お力添えいただきたく、何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 3次元配列を2次元配列にする方法はありますか?

    3次元配列を2次元配列にする方法はありますか? すいません、初心者です。 オープンソースとyahooとgoogleのAPIを使って統合型メタ検索エンジンを作っています。 yahooの結果の配列は2次元配列で出せました。 $search_results[$i]["url"] google APIは1回のリクエストで8件までしか呼び出せないみたいなので、 curl_multi関数を使って複数のリクエストを同時に取得しています。 そうしたら結果の配列は三次元配列になりました。 $search_results[$id][$i]["url"] 以下googleの関数です。curl_multiの部分等、文字数の関係で省略しています。 省略した部分のソースは下記リンクにのっています。 http://phpspot.org/blog/archives/2008/02/phpapi.html function search_google($query) { $curls = array(); $search_results = array(); $i=0; $site_results = array( 'http://ajax.googleapis.com/&start=0', 'http://ajax.googleapis.com/&start=8', 'http://ajax.googleapis.com/&start=16', 'http://ajax.googleapis.com/&start=24', 'http://ajax.googleapis.com/&start=32', 'http://ajax.googleapis.com/&start=40', 'http://ajax.googleapis.com/&start=48', 'http://ajax.googleapis.com/&start=56'); foreach($curls as $id=>$c) { $searchs[$id] = curl_multi_getcontent($c);//$cが$site_resultsのリクエスト結果 curl_multi_remove_handle($mh, $c); $json=json_decode($searchs[$id]); if($json->responseStatus != 200){exit();} $responseData = $json->responseData; $results = $responseData->results; for($i=0;$i<count($results);$i++){ $title = $current_result->title; $search_results[$id][$i]["title"]= $title; } } curl_multi_close($mh); return $search_results; } 統合型メタ検索にしたいと考えているのでgoogle配列の変数[$id]同士を結合して yahooの結果と同じく $search_results[$i]["url"] のような二次元配列にしたいのですが、そのようなことは可能ですか? 本当は両方とも3次元配列にするという処理が適切だと思いますが、初心者がオープンソースを改良して使用しているので、どこを直せば3次元配列のものをうまく表示できるのかわからないのです。 わかりにくかったらすいません。どうか、よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう