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

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

ただいまの
回答率

90.62%

  • PHP

    19771questions

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

  • for

    224questions

    for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

  • while

    75questions

    Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

  • foreach

    67questions

    foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

エラーが出てしまいます。正しい書き方を教えて頂きたいです。

解決済

回答 5

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 299
退会済みユーザー

退会済みユーザー

 前提・実現したいこと

arrayで馬名を格納して以下のように表示したいです。
出走馬は9頭です。
・ディープインパクト
・トウカイテイオー
・スペシャルウィーク
・スーパークリーク
・メジロマックイーン
・ダイユウサク
・オグリキャップ
・ウォッカ
・ダイワスカーレット

「出走馬は9頭です。」の'9'のところもphpで表示し、リスト部分をfor,while,foreachのそれぞれを使用しechoで表示させる。

 発生している問題・エラーメッセージ

出走馬は9頭です。
・ディープインパクト
・トウカイテイオー
・スペシャルウィーク
・スーパークリーク
・メジロマックイーン
・ダイユウサク
・オグリキャップ
・ウォッカ
・ダイワスカーレット

Notice: Undefined offset: 9 in C:\xampp\htdocs\php\print4.php on line 7

 該当のソースコード

<?php
$a=array("ディープインパクト","トウカイテイオー","スペシャルウィーク","スーパークリーク","メジロマックイーン","ダイユウサク","オグリキャップ","ウォッカ","ダイワスカーレット");
$s=count($a);
echo "出走馬は".$s."頭です。<br>";

for($i=0;$i<=count($a);$i++){
echo "・".$a[$i],"<br>";
}

 ?>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 5

checkベストアンサー

+6

この配列の場合は、$a[0]が「ディープインパクト」、 $a[8]が「ダイワスカーレット」で、count($a)は9です。

記載のソースコードは、0-9のループになっているので、

for($i=0;$i<count($a);$i++){


もしくは

for($i=0;$i<=count($a)-1;$i++){


で、0-8のループにする必要があります。

本筋とそれますが、echoの処理で、「.」と「,」が混在しているのが気になりました。
どちらかに統一しておいた方がいいような気がします。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/05/29 11:03 編集

    ちなみにエラーの内容は、「この配列に9番目($a[9])は存在しないよ」という意味です。

    キャンセル

  • 2018/05/30 11:34

    ご回答ありがとうございました。無事解決いたしました。また機会があればよろしくお願いします。

    キャンセル

+4

要件を満たすだけならforeach文を使えば良いのではないでしょうか?
これなら「Notice: Undefined offset: 9」のエラーも出ないかと思いますが。

// 中略
foreach($a as $val){
    echo '・'.$val.'<br>';
}

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+3

for($i=0;$i<=count($a);$i++){


$i は0からはじまり、count($a)、すなわち9になるまでループします。
0,1,2,3,4,5,6,7,8,9
さて、何回まわったでしょう?

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

配列を定形でフォーマットするならimplodeでよいかも
リストはul-liのほうがよいような気がします

<?PHP
$a=["ディープインパクト","トウカイテイオー","スペシャルウィーク","スーパークリーク","メジロマックイーン","ダイユウサク","オグリキャップ","ウォッカ","ダイワスカーレット"];
$s=count($a);
echo "<div>出走馬は".$s."頭です。</div>\n";
echo "<ul>\n";
echo "<li>".implode("</li>\n<li>",$a)."</li>\n";
echo "</ul>\n";

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

エラーの解決策としては既に出ている通りですが、
配列を扱う上では「その添え字本当に存在する?」というチェックは入れておいた方が良いです。
例えば入力フォームから送信されてきた値はユーザーの入力なので必ず想定の情報が含まれているとは限りません。(htmlはブラウザ開発ツールなどから改ざん可能だからです)

for($i=0;$i<count($a);$i++){
 if(array_key_exists($i,$a)){
  echo '・'.$a[$i].'<br />';
 }
}


もしくは

for($i=0;$i<count($a);$i++){
 if(isset($a[$i])){
  echo '・'.$a[$i].'<br />';
 }
}

両者の違いは下記

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    for

    前提・実現したいこと 初めまして。今、私は友人からPHPを教わっています。 その友人から出された宿題に関して分からないことが起きてしまったため質問させていただきます。 出され

  • 解決済

    PHP:パスワードが一致したときのみ、投稿の削除をする簡易掲示板

    パスワードが一致したときの条件式をプログラムに書いても反応しません。/ファイル消去/ブロックの6行目あたりにあるif文のandの右側の条件式です。この式で使われている$delDat

  • 受付中

    PHPのクラスのインスタンスについて

    本を読んでいて 下記のようなコードが出てきました <?php class Person { public $name = "苗字"; public $a

  • 解決済

    標準入力のすべての行を取得する

    前提・実現したいこと 入力値 勇者 戦士 出力値 勇者さん 戦士さん 発生している問題・エラーメッセージ 出力結果 Arrayさん Arrayさん 該当のソースコード <

  • 解決済

    HTMLで配列の値を合計する方法

    HTMLでinputタグでデータを取得して、次のページに移動したときに 前処理としてデータを確認したいと思っています。 しかしその値をうまく比べることができません。 PHP5.5で

  • 解決済

    閏年の3月の最初の月曜日の日にちを計算

    1600年から2017年までの間で、いつが「うるう年」かと、「その年の”3月の最初の月曜日”は何日か」を表示するプログラムを書きたいのですが、どのように書けばいいかがわかりません。

  • 解決済

    PHPのforeach文での4項目ずつDivタグに囲んで繰り返し表示したい

    phpのforeach文を使って4項目ずつDivタグに囲んで繰り返し表示出来るようにしたいのですが、思うように動かないため質問しました。 現在、データベースに登録された名前を下

  • 解決済

    何回その場所を通ったかファイルに記録する方法

    ある関数があり、その関数は何回実行されているか分からない状態です。 その関数が何回実行されたかを適当なファイルに書き出すコードを考えました。 //変数$countは関数外で定義

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

  • PHP

    19771questions

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

  • for

    224questions

    for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

  • while

    75questions

    Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

  • foreach

    67questions

    foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。