• 締切済み

xmlからphpで出力したデータをソートするアンカーを設けたい

phpを使用し、WEBサービスで情報を取得して、foreachでデータを表示しています。 表示したデータについて、たとえばアマゾンのWEBサービスであれば、「価格でソート」、という文言をいれ、 それをクリックすると、ソートされる、という風にしたいと思っています。 <?php $url = "http://~~~~~~"; $params = "?~~~~~ $data = file_get_contents($url . $params); $data = str_replace(~~~,~~~, $data); $xml = simplexml_load_string($data); foreach ($xml->AAA as $aaa) { echo $aaa->ABC . "<br>"; echo $aaa->BBB->Price . "<br>"; } ?> というソースですが、「Priceでソート」というクリック可能なアンカーを挿入したいとき、どこにどのように書けばいいのでしょうか? asort、array_multisort とかを使えばいい、というところまで調べていますが、行き詰っています。 また、手法としては、 (1)取得したxmlデータを保持して、並べ替えるだけ (2)前述のソースを再利用し、再度xmlを取得しなおし、ただしそのときにソートの条件を付け加える のどちらかになるのでしょうか。

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

みんなの回答

回答No.1

foreach ($xml->AAA as $aaa) { echo $aaa->ABC . "<br>"; echo $aaa->BBB->Price . "<br>"; } ここの部分を、 $result = array(); foreach($xml->AAA as $aaa){ $result[] = array('id'=>$aaa->ABC, 'price'=>$aaa->BBB->Price); } といった感じで配列に書き出して、ソレを、asortなりarray_multisortなりで並べ替えればよいのではないでしょうか。

関連するQ&A

  • xmlからphpでうまくデータを出力できない

    WEBサービスでリクエストに対して取得したxmlの中で、下記のようなデータがあるのですが、それがうまくphpで出力できなくて困っています。 [xmlのデータ(一部)] <aaa>  <bbb>   <ccc>    <ddd>あいうえお</ddd>    <Date date="05" month="09" year="2009"> [phpのソース] echo $aaa->bbb->ccc->ddd ; echo $aaa->bbb->ccc->year ; ・・・(※) (※)の行は思いつきで書いてしまっているのですが、この状態で実行すると、「あいうえお」は取得できますが、日付が当然取得できません。質問は以下です。 (※)の部分は、どう書けばいいのでしょうか?

    • 締切済み
    • PHP
  • PHPでHTMLソースを取得する方法はありますか?

    PHPでHTMLソースを取得する方法はありますか? RSSで複数のHTMLソースを取得しました。 以下のことをやりたいのですが、こういったことは可能でしょうか? ・複数のHTMLソースを取得する(同じサイトからなのでタグの種類も大体同じものです) ・その中から<data>タグを取得する(dataの中にはそれぞれ適当な数字が入っています) ・それをソートして、ソート順にURLを表示する。 このようなことは可能でしょうか? $RSS=RSSのURL(XML) foreach($RSS as $value){ $URL[]=$value->URL; } for ($i = 0, $n = count($URL); $i < $n; $i++) { echo $URL[$i] . "<br />"; } これでそれぞれのURLが URL1 URL2 URL3 とそれぞれ表示されます。これらのURLからそれぞれの<data>タグを取得して上のようなことをやりたいです。 説明が下手で申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP4でのXMLデータの取り扱い

    Webサービスを利用してXMLデータを取得するスクリプトをPHPで書いています。レンタルサーバの関係でバージョンは4.4.4しか使えません。 XMLを扱う関数というと、PHP5ではsimpleXMLやXMLReaderなどがあるようで、各要素へアクセスするにも $xml=simplexml_load_file('books.xml'); foreach($xml->book as $book){ .... という感じでオブジェクトとしてアクセスできるようですが、こういうのをPHP4で実現する方法はないのでしょうか?例えば入れ子になったデータだと、深い階層にたどりつくために foreach($results as $key => $value){ foreach($value $key2 => $value2){ foreach($value $key3 => $value3){ ... } } } みたいな感じで書いているのですが、まったくスマートではないですし、なにか間違っているような気がします。良い方法があればお教えください。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • XMLのURLをPHP表示したいのですが

    ご質問失礼いたします。 XMLをPHPで表示させたくて、下記のようにPHPファイルを作りました。 <?php $xmlfile = "xmlのURL"; $article=file_get_contents($xmlfile); echo "<table><tr><td>題名</td><td>リンク</td></tr>"; foreach($article->ItemLookupResponse->Items->Item as $data){ echo "<tr><td>"; echo $data[Title]; echo "</td><td>"; echo $data[ItemLinks->ItemLink asURL]; echo "</td></tr>"; } echo "</table>"; ?> echo $article;//で確認したXML(表示に必要な部分だけに省略させていただきました) <?xml version="1.0" ?> <ItemLookupResponse xmlns="http://www.~"> <Items> <Item> <Title>たいとる</Title> <ItemLinks> <ItemLink> <URL>http://www.~</URL> </ItemLink> </ItemLinks> </Item> </Items> </ItemLookupResponse> しかし、表示されず原因を特定することができません。 XMLだけを表示すると、 「This XML file does not appear to have any style information associated with it. The document tree is shown below.」 とは出ますが、情報はきちんと出ていると・・・思います。 PHPのファイルはページのソースを確認しても問題ないように見えたので、 表示の方法かXMLが違うのか、ご指摘いただければと思います。 すみません、知識が未熟な為、伝わりにくかったら申し訳ございませんが、 何卒お力をいただけたらと思います、宜しくお願い致します。

    • ベストアンサー
    • XML
  • [PHP+XML]PHPで動的に出力するXMLをどのようにして読み込めばいいでしょうか?

    こんにちは、どうしても解決ができなくて困っています。 お助け願います。 DBからデータを取得し成形するなどした結果をXMLで出力できるようにPHPを用意しました。 ブラウザから確認でき、XMLをソース表示しても問題ありません。 次にこれを読み込むPHPを書いています。 simplexml_load_fileなどでXMLファイルを開くことはこれまでにもやっていたので、直接XMLファイル名を記述するところに用意したPHPを指定しました。 結果はエラー。 いろいろ検証した結果、PHPがアクションする前にPHPファイルが開かれてしまっている感じ。 DOMDocumentのload()やloadXML()で読み込む方法もトライしましたが結果は同じ・・・。 根本的に間違ってますか? PHPから吐き出されるXMLを読み込むためにXMLファイルを記述するところにPHPスクリプトを指定すること自体が間違っているようにも思っています。 お手数をお掛けいたしますがお教え願います。

    • ベストアンサー
    • PHP
  • xml画像データを表示するphp

    xml画像データを表示するphp下記で構文エラー....解りません ご教授宜しくお願い致します。 IMAGE.XML <?xml version="1.0"?> <photos> <photo url="http://www.kahokanko.com/menu/1.jpg"/> <photo url="http://www.kahokanko.com/menu/13.jpg"/> <photo url="http://www.kahokanko.com/menu/8.jpg"/> </photos> IMAGE.PHP <?php $xml = simplexml_load_file($req) foreach($req->photos->photo as $value){ printf('<img src="%s"><br>', $value->photo->URL); }

    • 締切済み
    • PHP
  • FLASH⇒PHP間のXML受け渡し

    FLASH & PHP初心者です。 環境: FLASH8 PHP5.2.3 FLASHからsendAndLoadを使ってXMLを送信した場合、サーバ側PHPでは$_POST[];でデータ取得できるのかなと思って調べています。 例:xml_Request.sendAndLoad("http://localhost/xmlresponder.php", xml_Response); このとき、$_POST[]の中には何を記述したらよいのでしょうか。 それとも他の取得方法があるのでしょうか。 同様の質問がQNo.2916528に上がっていたのでecho $_POST[text/xml];で動かしてみたのですが<br />が返って来ただけでした。 ご教授宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPでXMLを扱いたいのですが

    PHPでXMLを扱いたいのですが、わからないところがあります。 <XML>  <T>   <A>    <a>    </a>    <b>    </b>    <c>     <c1></c1>     <c2></c2>    </c>   </A>   <A>    <a>    </a>    <b>    </b>    <c>     <c1></c1>     <c2></c2>    </c>   </A>   <A> 以下くりかし・・・  </T> </XML> このような感じのXMLがある時に、<a>,<b>等のタグの中身はちゃんと一つめの<A>、二つめの<A>、のように、 繰り返しある全てを取り出すことが来るのですが、 <c1>のようにもう一つ奥になっているものが取り出せません。 //以下成功するソースです。 foreach(XML->T->A as $value){ $data[]=$value->a; } for($i=0,$n=count($data);$i<$n;$i++){ $file=$data[$i]; } echo $file; これだとうまく動作しますが、 //以下失敗するソースです。 foreach(XML->T->A->c as $value){ $data[]=$value->c1; } for($i=0,$n=count($data);$i<$n;$i++){ $file=$data[$i]; } echo $file; このように<c1>を取り出そうとすると、繰り返しある<c1>の内の初めの一つしか取りだせません。 もう何回も色々と変えてやっているのですが、どれもうまくいきませんでした。 どうすればいいのでしょうか。分かる方教えて下さい、お願いします。

    • 締切済み
    • PHP
  • PHPをHTMLで出力したい。

    PHPを使い、 仮にaaa.htmlの中にbbb.htmlというデータをインクルードして、 aaa.phpではなく、aaa.htmlとして出力したいのですが、うまくいきません。 .htaccessを 調べたらよく出てくる AddType application/x-httpd-php html を入れて 同じ階層にアップしてもうまくいきません。 具体的にどうなるかというと、~~/aaa.htmlと打つ(URL欄に)とダウンロードになってしまいます。(ページのaaa.htmlをデータをダウンロード) ブラウザはサファリです。 これはaaa.htmlのデータをxhtmlと宣言しているからでしょうか? AddType application/xhtml+xml html もいれて AddType application/xhtml+xml html AddType application/x-httpd-php html ともしてみたのですが、結果は同じです。 ちなみにaaa.phpでは問題なく表示されます。 レンタルサーバーでもphpは対応しています。 AddType application/xhtml+xml html AddType application/x-httpd-php html (改行) でもダメです、調べた限りをつくしました。。 解決策の程、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPで配列を使ってHTMLソースを取得したいです

    RSSで取得したXMLの中身からURLを取得したのですが、 それぞれのソースをループ構文を使って取得する方法はありますか? XMLの中身を配列として表示すると ソース↓ $RSS_data = simplexml_load_file($RSS_url); $i=0; foreach($RSS_data->URL as $value){ $result [$i] ['URL'] = $value->URL; $i++; } echo "<pre>" ; print_r($result) ; echo "</pre>" ; 結果↓ Array ( [0] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) [1] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www~ ) ) [2] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) [3] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) こんな感じで続いていきます。 このURLの一つ一つのソースを取得したいのですがどうすればいいのでしょうか?

    • 締切済み
    • PHP