アプリ版:「スタンプのみでお礼する」機能のリリースについて

<Result>
<Hit index="1">
<Title>タイトル 01</Title>
<Url>http://hogehoge.co.jp/01.html </Url>
<Image>http://hogehoge.co.jp/img01.jpg </Image>
</Hit>
<Hit index="2">
<Title>タイトル 02</Title>
<Url>http://hogehoge.co.jp/02.html </Url>
<Image>http://hogehoge.co.jp/img02.jpg </Image>
</Hit>
<Hit index="3">
<Title>タイトル 03</Title>
<Url>http://hogehoge.co.jp/03.html </Url>
<Image>http://hogehoge.co.jp/img03.jpg </Image>
</Hit>
.
.
.

以下で全件取得できるのですが、
例えば2番目(Hit index="2")から8件(Hit index="9"まで)だけ取得したい場合はどの様にすればよいのでしょうか?

$xml=simplexml_load_file($url);

$hits = $xml->Result->Hit;
foreach ( $hits as $hit )

echo h(urlencode($hit->Url));
echo h($hit->Image);
echo h($hit->Title);

----------------------------
array_sliceの使い方がよくわかりません。
宜しくお願いします。

A 回答 (2件)

array_sliceで切り出せるのは「配列」だけです(関数名からも自明ですしマニュアルで確認すればもっと確実でしょう)。

例示されたソースでは「オブジェクト」を扱っていませんか?

対象がオブジェクトであれば、素直にforeachの中で(カウンタを)カウントアップして自前で判断するのが適切だと思います。

$cnt = 0;
foreach ($obj as $val) {
$cnt++;
if ($cnt < 2) { continue; }
if ($cnt > 8) { break; }
// $val を処理
}
    • good
    • 0
この回答へのお礼

有難うございます。
思うように処理することができました。

array_sliceのリファレンス等、色々なサンプルはみな配列になっていたので、この部分をどの様に記載するのか分からず悩んでいました。
やはり配列でないとダメなのですね。

エラー文からも、そのあたりに問題があるようだったので
配列に変換するなど処理が必要なのか?
と思いつつ、どうすれば良いのか停滞していました。

配列とオブジェクトについて少しですが理解できました。


本当に有難うございました。

お礼日時:2013/01/21 03:51

なんでリファレンスを読まないの?

    • good
    • 0
この回答へのお礼

回答有難うございます。
勿論、リファレンスも読みましたし他参考サイトも検索しました。

array_slice($hits,1,8)で良いのかと思いましたが、これを何処に入れて、どの様に使用したら良いのかが分かりませんでした。

$xml=simplexml_load_file($url);
$hits = array_slice($xml->Result->Hit,1,3);
foreach ( $hits as $hit ) {
echo h(urlencode($hit->Url));
echo h($hit->Image);
echo h($hit->Title);
}

これだと、このようなエラーになってしまいます。
Warning: array_slice() expects parameter 1 to be array,
Warning: Invalid argument supplied for foreach()

色々試してみたのですが。。

詳しい方には簡単であったり、リファレンスを読んで解決できるのでしょうが、
初心者にとっては、ほんの些細なことでつまずき進めないことが多々あるのです。

私だけの回答ではなく、初心者で同じような疑問にぶつかってこのページを見る人もいるかと思います。

誰でも得意・不得意分野があるかと思います。

「得意分野や得た経験、持っている知識で困っている人を助けましょう。」
「すでに投稿された質問・回答を検索して、あなたの毎日に役立てましょう。」
という趣旨のもとに、お力添えをいただければと思います。

有難うございました。

お礼日時:2013/01/21 01:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!