• ベストアンサー

ループ処理を抜けた時点での処理回数を表示したい

今、以下のような「green」が配列の何番目にあるのか調べるプログラムを考えています。 具体的な処理としては、配列の値を順番に調べて「green」を見つけたらループをぬけて何番目にあったかを表示する、といった処理になります。 ただ、現時点ではループをぬけた時何番目だったのかを取得できないでいます。 $numを取得して表示するにはどのような処理を行えばよいでしょうか。 解説していただけると幸いです。 ---プログラム--- class hoge{ function hoge(){ $this->color = array("red", "blue", "pink", "white", "black", "gold", "yellow"...,"green",...); } function test(){ for($i = 0;$i < count($this->color);$i++){ if($this->color[$i] == 'green'){ echo $this->color[$i]."\n"; break;###ここでループをぬける } } echo "緑は${num}番目"; } } $a = new hoge(); $a->test(); ---

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

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

  • ベストアンサー
  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.1

一致したときのループカウンタの $i にループ回数が入っていますから、それを $num に代入すれば? と言うような事でしょうか?

tadao1213
質問者

お礼

ご解答ありがとうございました。 $num = $i; を追加して解決できました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

keyを指定して配列をつくっていないならこんなんでいいんじゃないですか? print array_search("green",$this->color)."番目";

tadao1213
質問者

お礼

>keyを指定して配列をつくっていないならこんなんでいいんじゃないですか? このやり方でも表示できました。 こんなやり方もあるんですね。 ご解答ありがとうございます。

関連するQ&A

  • forループで$iを表示させるには?

    ループで文字連結は出来ないのですか? ↓がはまりどころです。 $test1 = "abc"; $test2 = "def"; for($i=1; $i<=2; $i++){ echo $test.$i; } 上記だと変数が見つかりませんってことでエラーになります。 $test.$iのところをカッコを付けたり評価させてみたりでいろいろ試したのですがどうにもうまくいかないのでご教授いただければと。 配列なら問題ないんですけど…。 $test[1] = "abc"; $test[2] = "def"; for($i=1; $i<=2; $i++){ echo $test[$i]; }

    • ベストアンサー
    • PHP
  • BShell 動的配列のループ処理について

    動的に変数名を作成した配列について、ループ処理を行う場合、どうしたらいいでしょうか 以下のような処理を書いたのですが、駄目でした。 a=0 while [ ${a} -ne 10 ] do     eval $(printf TEST%02d $a)=(aaa bbb ccc) #TEST00 - TEST10の配列が作られる。     # TEST00 - TEST10の配列の中身にたいして処理を行いたい。。。     for (( I=0; I < ${#`eval $(printf TEST%02d $a)[@]`}; ++I )) # エラー     do         // ここで処理したい・・・     done done いいアイディアがありましたらご教授よろしくお願いいたします。

  • ループ処理について

    下記のようなScriptを記述しました。 for(i = 1; i <= 4 ; i++) { trace("A") ; var fileload:LoadVars = new LoadVars(); fileload.load("b"+i+".jpg"); fileload.onLoad = function(success:Boolean) { trace("B") ; if (!success) { ok_flg = 1; } else { a.duplicateMovieClip("b"+i, i); this["b"+i].loadMovie("b"+i+".jpg") ; this["b"+i]._x += (i - 1) * 90 ; } }; } 本来ならJPEGが存在する分だけ読込むと言う処理をしたいのですが、テスト的に3ファイル用意してテストしました。 JPEGの命名規則は「b1~b3」としています。 普通のループ文であれば問題無く3件のJPEGが表示されますが、読み込みが成功したか否かの判断文を入れると動作がおかしくなります。 TRACEを入れてみたら、 A A A A B Error opening URL "file:///C|/Documents%20and%20Settings/xxxxx/デスクトップ/b4.jpg" B B B このように最初に読み込みの処理を実行し、その後に成功したか否かの判定が処理されます。 これって、正常なループの処理でしょうか?。 また、私が処理したかったようにするにはどのようなScriptにすれば良いのでしょうか?。 宜しくご教授ください。

    • ベストアンサー
    • Flash
  • PHP プログラム ループ処理

    プログラム初心者です、ループ処理についてうまい解決方法が思い浮かばず相談させて頂きます。 ループ処理において、ループ内で変数を定義するのに違う名前を指定するにはどのような方法があるのでしょうか 例えばwhileの場合 $i =0; while($i<10){ $hoge = $i; $i++ } この$hogeを2順目には$hoge1、3順目には$hoge2と言うように増やしたり一定の法則に乗っ取って変数名を変更するにはどのように書けばいいのでしょうか。 どなたかご教授頂ければと存じます、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 配列のループ展開

    下記で配列内を検索しても、「存在しません」になります。 どこが、間違っているのでしょうか? <?php for($i = 1; $i <= 42; $i++) { $seminar = "http://www.hoge.com/hoge/".sprintf("%04d", $i).".html"; echo $seminar; } $url = array( $seminar ); $myUrl = "http://www.hoge.com/hoge/0020.html"; if(in_array($myUrl, $url)){ echo "配列に".$myUrl."は存在します。"; } else { echo "配列に".$myUrl."は存在しません。"; } ?>

    • ベストアンサー
    • PHP
  • arrayの中で、ループを使った採番など。

    前回の続きになるのですが、下記の様に、arrayを複数にすると動かなくなります。 何が間違っているのでしょうか? $url = array(); for($i = 1; $i <= 42; $i++) { $seminar = "http://www.hoge.com/seminar/".sprintf("%04d", $i).".html"; $url[] = $seminar; } $test = array( "http://www.hoge.com/seminar/0043_01.html" "http://www.hoge.com/seminar/0043_02.html" ); $array = array($url, $test); $myUrl = "http://www.hoge.com/seminar/0045.html"; if(in_array($myUrl, $array)){ echo "配列に".$myUrl."は存在します。"; } else { echo "配列に".$myUrl."は存在しません。"; }

    • ベストアンサー
    • PHP
  • setTimeoutをループさせDOMを処理したい

    「setTimeout」「for文」「jQuery」を利用して、1秒ごとに、 <div class="hoge1">、<div class="hoge2">、<div class="hoge3">へ対して、同じ処理をしたいです ■処理内容イメージ ・ループカウントの変数iを渡して、それぞれのdiv内で、1、2、3と表示 ■質問 「setTimeout」を1秒ごとに、指定DOMへ対して、ループさせる方法を教えてください ※ループできるなら、「for文」じゃなくても良いです

  • 【JS(Jquery)】表示切替 show(); hide();

    お世話になります。 ただ今JSのライブラリ(Jquery)を利用してあるプログラムを書いております。 以下がそのスクリプトとなり、内容は、 配列「tBtn」の1番目がホバーされたら 配列「tBlo」の1番目を表示し、「tBlo」の1番目以外は非表示にする。 配列「tBtn」の2番目がホバーされたら 配列「tBlo」の2番目を表示し、…以下省略。 配列「tBtn」の1番目がホバーされたら 配列「tBlo」の1番目を表示するという動作は理解できるのですが、 「tBlo」の1番目以外を非表示にするにはどういう書き方をすれば よろしいでしょうか。 どなたかお知恵をお貸しください。 $(function(){ var tBtn = new Array( 'hk', 'tk', 'ho' , 'kt' ); var tBlo = new Array( 'test1', 'test2', 'test3' , 'test4' ); $.each(tBtn, function(i, item) { $("#" + this).hover(function(){ /* if(this != tBtn[i]){ $("#" + tBlo[i]).fadeOut(); } */ },function(){ return false; }); }); });

  • ログインの処理

    ログインの処理を一つの関数(function Login)で行おうとしています。 ログインフォームが表示されるページに遷移した際に32文字のランダムの文字列を受け取ります。 この文字列を$this->str["hoge"]のオブジェクトに預けます。 この直後にechoすると預けた文字列が表示されています。 ログインのフォームにIDとパスワードを入力して再度このページ(function Login)で処理した際に$this->str["hoge"]が消えてしまいます。 これで駄目だっただめ$_SESSION["hoge"]を利用してもこの変数が消えてしまいます。 このような場合どのように処理したら良いでしょうか?

    • ベストアンサー
    • PHP
  • PowerShellのtrapの例外処理について

    初歩的な質問ですが、PowerShellのtrapの例外処理ついて教えて下さい。 以下のようなスクリプトがあります。 ------------------------------------------------- test1.ps1 trap [Exception] { echo "trap!!" } 5/0 echo "go go" ------------------------------------------------- test2.ps1 trap [Exception] { echo "trap!!" } function fun($num) { 5/$num } fun 0 echo "go go" test1.ps1はtrapに遷移しないのですが、test2.ps1はtrapに遷移します。 どうしてなのでしょうか。 コマンドレットでエラーが発生した場合ののエラーハンドリングであって 「5/0」のような処理はコマンドレットでのエラーではないのでハンドリング されないのでしょうか。 では、なぜ、関数するとハンドリングされるのでしょうか。

専門家に質問してみよう