arrayの中で、ループを使った採番など

このQ&Aのポイント
  • arrayを複数にすると動かなくなる原因は何でしょうか?
  • arrayの中に複数の要素を持つ場合、in_array関数の使用方法に注意が必要です。
  • 配列の中から特定の要素を検索するには、配列の結合を事前に行う必要があります。
回答を見る
  • ベストアンサー

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
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5072/13251)
回答No.3

> 配列にある値を$myUrlにセットしても、 > 配列に○○○○は存在しません。となってしまいます。 $array は2次元配列になっているので正しい動作だと思います。 in_array() は第2引数の1次元目の配列の中に第1引数の値があるかチェックしています。 $array = array($url, $test); を $array = array_merge($url, $test); にすると $myUrl を見つけられますが、その場合 $array は2次元配列では無く1次元の配列になります。 $array を作った後で var_dump($array); を実行すると変数の中身がどうなってるか分かると思います。

oh-sit
質問者

お礼

array_mergeも、var_dumpも知らなかったので、大変勉強になりました。有難う御座います。

その他の回答 (2)

  • t_ohta
  • ベストアンサー率38% (5072/13251)
回答No.2

$test = array( "http://www.hoge.com/seminar/0043_01.html" "http://www.hoge.com/seminar/0043_02.html" ); の部分で、1つ目の値と2つ目の値の間にカンマが無いので構文エラーです。 動作しない場合は、表示されたエラーメッセージを添えて質問する方がいいですよ。

oh-sit
質問者

補足

ご指摘有難う御座います。 カンマを挿入しましたが、 配列にある値を$myUrlにセットしても、 配列に○○○○は存在しません。となってしまいます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「動かない」とは, 具体的にはどういうことですか?

oh-sit
質問者

補足

配列に存在する値を$myUrlにセットしても、 配列に○○○○は存在しません。となってしまいます。

関連するQ&A

  • 配列のループ展開

    下記で配列内を検索しても、「存在しません」になります。 どこが、間違っているのでしょうか? <?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
  • ループ処理を抜けた時点での処理回数を表示したい

    今、以下のような「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
  • 配列の中に一部の文字があるかどか確認したい。

    <? header("Content-Type: text/html; charset=EUC"); $sample = array('test1' => "aaa 000 222 333" ,'test2' => "b 555 888 999",'test3' => "c 777 111 10"); if(in_array("222",$sample)){ echo "●"; } if(in_array("aaa 000 222 333",$sample)){ echo "○"; } ?> というようにPHPを記述すると「○」はでるのですが、 「●」がでません。 eregのように配列の中に一部の文字があるかどうかを確認する場合はどうしたらよいのでしょうか。

    • 締切済み
    • PHP
  • foreachのなかで次のキーを参照するには

    こんばんわ, 現在PHPを学習しています。 たとえば, $hoge[0]=1; $hoge[1]=2; $hoge[2]=3; $hoge[3]=4; $hoge[4]=5; $hoge[5]=6; $hoge[6]=7; と配列があり,これをforeachで回していく際に,hogeが5になったときには,次の配列の要素である6を参照したい場合に foreach($hoge as $val){ if($val == 5){ /* $valの次の要素を見たい */ } else{ echo $val; } } をどのようにすれば,よろしいでしょうか。foreach文ではだめなのでしょうか。 nextやeachをしようしようとおもったのですが,うまくいきません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpで 変数の中にデータが入っているかどうかを判別する

    phpで変数の中が空なら・・・ という命令を書く場合 if($hoge == "")とか if(isset($hoge)) という風に書くとおもうんですが、 変数の中身が配列で、その配列の一つでもデータが入っているかどうかを 判別する方法はないのでしょうか? 例えば、 $hoge = array([1] = りんご,[2] = )  と  $hoge = array([1] = ,[2] = ) で、表示結果を変えたいということです。 配列を一旦分解するしかないのでしょうか?

    • ベストアンサー
    • PHP
  • phpのin_array()でわからない事があります。

    phpのin_array()でわからない事があります。 $str = array('リンゴ','オレンジ','バナナ'); if(in_array("オレンジ",$str)){ print "OK"; }else{ print "NG"; } 結果:OK 上記は何の問題もないのですが、 $str = @file('hoge.txt'); if(in_array("オレンジ",$str)){ print "OK"; }else{ print "NG"; } 結果:NG // hoge.txt リンゴ オレンジ バナナ こうするとNGになってしまいます。 最近PHPを始めたばかりで根本的な事がわかってないのかも知れませんが、 もし原因をご存じの方がいれば教えていただけないでしょうか。 すみませんがよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 配列IF()について質問です。

    $bad = -1; $bad2 = array_search($bad,$king_array); if($bad2==""){ echo "こんばんわ"; }else{ if($king_array[$bad2-1]!==-1 and $king_array[$bad2]==-1){ $king_array[$bad2] = ($king_array[$bad2-1]+$king_array[$bad2+1])/2; }else{ echo "おはよう"; }}} 現在こんな感じで、配列に-1が有れば、代入する式を書いています。 しかし、これだと配列に-1が二つ入る(例:80,-1,60,-1,50)と上記の式を実行してくれなくなります。 これを解決するにはどうすれば良いですか?? 他にも-1が連続で二つ入った場合はどうすれば良いですか??

    • ベストアンサー
    • PHP
  • functionの中にfunction?

    functionの中にfunctionの関数を読み込みたいのですが そのようなことはphpで可能でしょうか? ソースは以下のようになっております。 // 実行 hoge1(); hoge2(); function hoge1() { if (!$_POST["submit"]) { foreach($_POST as $k => $v) { if(get_magic_quotes_gpc()) { $v=stripslashes($v); } $v=htmlspecialchars($v); $array[$k]=$v; } extract($array); } } function hoge2() { echo <<<EOM ~~表示させる文章など~~ EOM; foreach ($array as $key => $val){ echo "<input type=\"hidden\" name=\"$key\" value=\"$val\" />\n"; } } 具体的にはhoge1のextract($array);をhoge2の$arrayに入れて foreachで出力させたいのですがどのようにすればできますでしょうか?

    • 締切済み
    • PHP
  • 配列の値をループ

    よろしくお願いします。 例えば、$ary=array(1,2,3,4,5,6,7); という配列があるとします。この1,2,3,4,5,6,7の値を ループで表現することは可能でしょうか?? for文で試してみましたが、 $hoge="for($i=0;$i<7;$i++){ print $i; }"; $ary=array($hoge); 表示結果 for($i= でした。""で囲んだのでそのまま文字としてなったんだと 思います。""をはずすとエラーになります。 理想の表示結果は当然 1,2,3,4,5,6,7です。 行いたいことの意図はわかっていただけたでしょうか? 可能な場合、どういう記述をすればうまくいくのでしょうか? それとも不可能なのでしょうか?よろしくお願いします。 環境 php4.4.4 apache2 winXP

    • ベストアンサー
    • PHP
  • ループ内のaddeventlistner

    javascript初心者です、いろいろ検索したのですがわからず 教えてください。 サンプル <div id="hoge"></div> <script type=application/javascript> window.onload=function () { var html="検索エンジンのビッグ3" var big3= [ { "name":"google", "url":"http://google.com" }, { "name":"yahoo!", "url":"http://yahoo.com" }, { "name":"bing", "url":"http://bing.com" } ]; for (var i = 0, len = big3.length; i < len; i++) { html+= "<br />名前:"+big3[i].name+"<br />";  html+= "URL:"+big3[i].url+"<br />"; html+= '<input type="button" id="btn" value="投票" /><br />' }; document.getElementById("hoge").innerHTML=html; } </script> ----サンプルここまで このように配列をずらずらっと表示させてそれぞれのボタンを押すと、 その時の配列の情報を参照したいのです。 下のコードをボタンのすぐ下に置きましたが、cannot call method addEventListener of nullってエラーでできず、for文の外だと配列情報がとれず、基礎がわかっておらずすみませんが教えてください。 document.getElementById("btn").addEventListener('click',function(){alert("あなたがおしたのは"+big3[i].name)},false);

専門家に質問してみよう