質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • PHP

    20827questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Zend Framework 2

    48questions

    Zend Framework 2は、PHP 5.3以上に対応している MVCフレームワークとコンポーネントライブラリーの集合です。

Zend Framework2で foreachのすべての要素を viewに表示するための記述

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,051
こんにちは。
初心者です、よろしくおねがいします。

質問をしながらプログラミングを進めております。

タイトルに関してですが、
今、Zend Framework2でプログラムを記述しています。
そこで質問です。

いま、controller部分に、
foreach文を使ってmodelのarrayから要素を引っ張ってきて、
viewに渡すコードを書いています。

表示したいのはarrayに入っているすべての要素なのですが、

foreach ($getParamByKeyword as $key => $value){
      $result = $getParamByKeyword[$key]["title"];
      $image = $getParamByKeyword[$key]["imageurl"];
      }

      $this->view->result = $result;
      $this->view->image = $image;

だと$result,$imageにはarrayの最後の要素しか残りません。
よってviewに表示されるのは最後の情報だけになってしまいます。

引っ張ってきたすべてのarrayの要素を上書きせずに保存して、
viewまで持っていくことのできる方法はありますか?

別の質問サイトで、
『どんなMVCでも「繰り返しのあるデータ」をviewに表示するための記述法(配列にするとか)があるはず』
と教えていただいたのですが、何が何やらさっぱりで…。

はじめのとっかかりだけでもいいので何かあれば教えてください。
よろしくお願いします。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

$this->view->resultがview側でどうアクセスできるかわからないので当てずっぽうですが...

controllerにて
$this->view->result = $getParamByKeyword;

viewにて
<dl>
<?php foreach ($this->result as $key => $value): ?>
    <dd><?= $key ?></dd>
    <dt><img alt="<?= htmlspecialchars($value["title"]) ?>" src="<?= $value["imageurl"] ?>" /></dt>
<?php endforeach; ?>
</dl>
こんな雰囲気ではないでしょうか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

foreach ($getParamByKeyword as $key => $value){
      $result = $getParamByKeyword[$key]["title"];
      $image = $getParamByKeyword[$key]["imageurl"];
}

これではせっかく回してるのに、 $result , $image を上書きしているので最後の値しか持たないのは当たり前。

$this が何のクラスか知らんけど、

$this->view->result = $getParamByKeyword;

こうすればいいだけじゃないんですかね…。つまり、foreach 不要。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/17 01:07

    早速ありがとうございます。

    ええと…、

    $this->view->result = $getParamByKeyword;

    だと、arrayもなにも出てこないと思うのですが、
    私の質問の仕方がどこかおかしかったのでしょうか…。

    上書きしているというのは自分でもわかっていて、
    それを上書きしないでそれぞれ保持してくれる処理があれば…と思って質問しました。
    なさそうですかね。変な質問してすみませんでした。

    キャンセル

  • 2015/08/17 01:13

    単純に、$result を view 側で展開するだけじゃないかと思います。

    キャンセル

  • 2015/08/17 01:38

    はい、$resultをview側で展開したいのですが、

    $this->view->result = $getParamByKeyword;

    は$result の展開ではないですよね。

    $getParamByKeyword の中に$result や$image が格納されていて、
    それだけを取り出したいのですが、
    foreachで取り出すと上書きを重ねて最後のだけしか見れず、
    かといってechoだとviewに渡すまえにcontrollerから表示されてしまい。

    私の知識不足でKousuke_shibuyaさんのアドバイスをうまく理解できておらず申し訳ないです、ありがとうございます。

    キャンセル

  • 2015/08/17 01:48 編集

    $this->view->result = $getParamByKeyword;
    var_dump($this->view->result);

    これでちゃんと格納されているのは確認できるでしょ?

    まさか、公式リファレンスも読まずに質問してません?

    キャンセル

  • 2015/08/17 04:36 編集

    横からですが、単純に

    $result=array();
    $image=array();
    foreach ($getParamByKeyword as $key => $value){
    $result[] = $value["title"];
    $image[] = $value["imageurl"];
    }

    って事がしたいわけじゃ無いですか?

    キャンセル

  • 2015/08/17 05:13 編集

    landy77さん
    まあ、質問自体はそうなのはわかるんですが…
    たんに配列を入れ直してるだけですからね…
    その処理自体が無意味…

    キャンセル

  • 2015/08/17 12:16

    みなさんありがとうございます。もう少し考えてみます。

    キャンセル

関連した質問

  • 解決済

    Zend Framework2におけるValidatorに関して(PHP)

    Zend Framework2のフォームを検証するために、formFilterメソッド(ファクトリメソッド)を使っています。 そこで質問なのですが、ファイルアップロードのバリ

  • 解決済

    Zend Framework 2で、Select要素の値を設定するには?

    ログイン用のテキストボックスを作成するために、zend framework2で自作のFormクラスを使っています。 【LoginForm】 use Zend\Form\Form;

  • 解決済

    Zend_Capcha_Imageで生成した画像を、ボタンを押して再読み込みさせるには?(PHP)

    Zend_Capcha_Imageで生成した画像を、リフレッシュボタンを押して再度読み込ませるにはどうしたらいいですか? Zendを使った解決策を教えてください。 自分で調べても

  • 解決済

    Zend_Validatorのメッセージカスタマイズについて

    バリデータのエラーメッセージをカスタマイズして表示させたいのですが、変数が存在しない場合に、NotEmptyの判定でデフォルトのエラーメッセージが表示されます。 $spec=

  • 解決済

    ZendFrameworkのsetOptionsに文字列での選択肢を追加したい

    前提・実現したいこと 実現したいことは、よくあるselectタグのoptionに文字列での選択肢を追加したいと考えています。 選択肢としましては、MrとMisの二つから選択でき

  • 受付中

    zend DB接続について

    Zendフレームワーク1.8をつかっているのですが、 mysqlにつなぐ際に--local-infile=1というオプションをつけたいのですが、 configなどにそれを記載す

  • 解決済

    self::と$this->の使い分け

    外部のパートナー企業から納めて頂いたコードで、疑問があります。 前提 PHP5 ZendFramework1 普段はCakePHPを使っている :-)

  • 解決済

    php 継承関係について

    お世話になっております。 PHPの継承の関係について質問させてください。 ある理由がありまして、継承先から継承元にメソッドを渡したいのですがどうしたら良いでしょうか。 元のファ

同じタグがついた質問を見る

  • PHP

    20827questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Zend Framework 2

    48questions

    Zend Framework 2は、PHP 5.3以上に対応している MVCフレームワークとコンポーネントライブラリーの集合です。