数字のマッチングに関する添削おねがい

このQ&Aのポイント
  • 添削お願いします。数字のマッチングの書き方について詳しく教えていただけませんか?
  • 理想とする動作は、1から50までの数字を表示し、配列内の数字と一致した場合は「数字xはAとBで一致しています」と表示させ、一致しない場合は「数字xは不一致です」と表示することです。
  • 動作例として、数字1はAとBで一致していますが、数字2と数字3は一致していないことがわかります。添削いただけると助かります。
回答を見る
  • ベストアンサー

添削おねがいします。数字のマッチング

書いてみましたが、うまく表現できません。 添削してもらえませんでしょうか。 ◆理想とする動作 1~50の数字を表示させる。 そのさい$bの配列内の数字と一致した時は  数字xはAとBで一致しています と表示させ、それ以外は  数字xは不一致です とし数字が50になるまで、どちらかの表記ですべて表示させる。 $a=range(1,50); $b=array(1,4,8,10,14,20,21); if ($a[]==$b[]){ echo "数字xはAとBで一致しています<br>"; }else{ echo "数字xは不一致です<br>"; } 動作例; 数字1はAとBで一致しています 数字2は不一致です 数字3は不一致です 数字4はAとBで一致しています 添削いただけないでしょうか。 よろしくおねがいします。

  • PHP
  • 回答数1
  • ありがとう数9

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

せめてエラーのないソースを提示すべきでは?エラーを潰すくらいは自分でやらないと何一つ身に付きませんよ。 #「習得する気がない」ならそれでもいいですけどね。 (例) $a = range(1, 50); $b = array(1, 4, 8, 10, 14, 20, 21); foreach ($a as $val) { if (in_array($val, $b)) { printf("数字%dはAとBで一致しています<br>", $val); } else { printf("数字%dは不一致です<br>", $val); } } でも、普通は(このケースで)rangeは使いませんね。こう書くのが一般的でしょう。 $arr = array(1, 4, 8, 10, 14, 20, 21); for ($i = 1; $i <= 50; $i++) { if (in_array($i, $arr)) { printf("数字%dはAとBで一致しています<br>", $i); } else { printf("数字%dは不一致です<br>", $i); } }

omezhru
質問者

お礼

やれるところまでやり不明点は質問できたらと思っておりました。 今回大変参考になりました。

関連するQ&A

  • 二つの配列のマッチング

    お世話になっております。 配列$a と $b から配列$cを作りたい。 どうすればいいですか? $a = array('200708', '200709', '200710' ,'200711', '200712', '2000801); $b = array('200710,3', '200712,1'); $c = array('200708,0', '200709,0', '200710,3' ,'200711,0', '200712,1', '2000801,0); または、 $c = array('200708', '200709', '200710,3' ,'200711', '200712,1', '2000801);

    • 締切済み
    • PHP
  • array_randで要素が数字の場合の処理方法

    PHPのarray_randについて教えて下さい。 下記のようなソースを作りましたが思った通りの結果になりません。 //(A) $test=array(3,5,8,11,14,24,26,28); print_r($test); foreach ($test as $val) { echo $val.'<br>'; } //(B) $keys = array_rand($test, 5);//決められた数を抽出 print_r($keys).'<br><br>'; foreach ($keys as $val) { echo $val.'<br>'; } Aの部分の結果は Array ( [0] => 3 [1] => 5 [2] => 8 [3] => 11 [4] => 14 [5] => 24 [6] => 26 [7] => 28 ) foreachの部分の出力↓ 3 5 8 11 14 24 26 28 となりこれは特に問題ありません。 Bの部分でAの配列から5つランダムで取り出したいのですが、結果は Array ( [0] => 0 [1] => 3 [2] => 5 [3] => 6 [4] => 7 ) 0 foreachの部分の出力↓ 0 3 5 6 7 となってしまい、Aの配列の添え字の中から5つの数字が選ばれるようになってしまいます。 Aの添え字ではなく「3,5,8,11,14,24,26,28」の数字から5つランダムで取り出すにはどのような書き方をすればよいのでしょうか? ご回答よろしくお願い致します。

    • ベストアンサー
    • PHP
  • N桁の数字を順に表示したい

    例えば (1~9)までの数字を4つの変数(配列の1要素ずつでもいい) に分けて格納して、各変数の数字がダブらないようした 4桁の数字を順に表示するときって if( $a!=$b and $a!=$c and $a!=$d and $b!=$c and $b!=$d and $c!=$d ){ echo $a.$b.$c.$d."<br>" } すればいいと思うのですけど 数が多くなるとものすごく大変なので もっといい方法があるのではないかと思うのですが? ありますでしょうか?

    • ベストアンサー
    • PHP
  • 正規表現でパターンマッチした数字を変数に入れるには?

    array( _1="りんご" _2="みかん" _5="すいか" _13="いちご" ……) この様な配列があります。 この内、アンダーバーを含んだ数字を _1、_2、_5、_13…という様に取り出し、 一つ前の数字との差を比較したいのですが可能でしょうか? 最終的はその比較により if (一つ前の数字と同じ) { A; } else { B; } という風に処理分けをしたいです。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 配列の添え字が小数だとどうなる?

    ある書籍の検索アルゴリズムの2分検索の説明で、下記のような例が示されていました。 (これはその例を私がプログラム化したのもので、書籍からの転写ではありません。) そこで疑問なんですが、このプログラムは確かに動作こそしますが、 ループの中の$middleは小数になりますよね。 添え字が小数になる事は、正しい配列の処理といえるのでしょうか? 小数に対して、丸めるなどの処理を加えるべきなのでしょうか? よろしくお願いします。 ------------------------------------------------------------ 「$arrayの中から、$xを検索します」 $array = array(1,2,3,4,5,7,10,12); $x = 10; $low = 1; $high = count($array); $is_exist = false; while( $low <= $high and $is_exist == false ) { $middle = ( $low+$high )/2; if( $array[$middle] == $x ) { $is_exist = true; } else if ( $array[$middle] < $x ) { $low = $middle+1; } else if ( $array[$middle] > $x ) { $high = $middle-1; } } if ($is_exist) { echo "true"; } else { echo "false"; }

    • ベストアンサー
    • PHP
  • phpのwhileで希望通りの動作ができない

    以下のようにしてみたのですが「データはありません」という文章が何度も(何行も)表示されてしまいました。 while($test = mysql_fetch_array($sql, MYSQL_ASSOC)){ $name = $test[name]; if($cnt > 0){ echo "データはありません"; echo '<br>'; } elseif(empty($name)){ echo "データはありません"; echo '<br>'; } else{ $name = $name.'<br>'; } } whileで繰り返した結果、すべての$nameが「$cnt > 0」か「empty」の場合だけ、「データはありません」と一回だけ表示したいのですが、どのようにしたらいいでしょうか?

    • ベストアンサー
    • PHP
  • ソート時同じ値がある場合、表示順をコントロールする事は可能ですか?

    ハッシュの配列を配列の数の多い順に表示する場合で配列の数が同じの場合の最初に表示される配列の数字につきまして この配列の数が同じである場合の表示順序を意図した順番にする事は可能でございますか? この意図した順番と申しますのは、小さい数字を先に表示するのではなく下記の@array2の配列値の並んでいる順や別途配列に0~9の数字を適当に入れておきにそれを参考に評価するという形を希望しており模索中なのですが、まずこの事につきまして可能か不可能かをご教授願いたいのと、もし可能でしたらどうか解決に至る先輩方のお知恵をお借り出来ませんでしょうか よろしくお願い致します。 #!/usr/bin/perl use Tie::IxHash; @array0_n=('a','b','c','d'); @array1_n=('e','f','g'); @array2_n=('h','i'); @array3_n=('j'); @array4_n=(); @array5_n=(); @array6_n=('k'); @array7_n=('l','n'); @array8_n=('m','o','p'); @array9_n=('q','r','s','t'); %array1 = ( '0' => [ (@array0_n) ], '1' => [ (@array1_n) ], '2' => [ (@array2_n) ], '3' => [ (@array3_n) ], '4' => [ (@array4_n) ], '5' => [ (@array5_n) ], '6' => [ (@array6_n) ], '7' => [ (@array7_n) ], '8' => [ (@array8_n) ], '9' => [ (@array9_n) ], ); #配列の数の多い順に並び替え my @array2 =reverse sort { scalar @{$array1{$b}} <=> scalar @{$array1{$a}} or $a <=> $b } keys %array1; @array9_n2=('a2','b2','c2','d2'); @array1_n2=('e2','f2','g2'); @array2_n2=('h2','i2'); @array3_n2=('j2'); @array4_n2=(); @array5_n2=(); @array6_n2=('k2'); @array7_n2=('l2','n2'); @array8_n2=('m2','o2','p2'); @array0_n2=('q2','r2','s2','t2'); tie %TmpList, 'Tie::IxHash'; #@array2を元に更に動的にハッシュ内に配列を作成 foreach(@array2){ my $x="array$_\_n2"; $TmpList{$_}=[(@$x)]; print "$_,$#{$x},@$x<br>\n"; } print "1-end\n"; while ( ( $key , $value ) = each %TmpList ){ print "key:$key value:@$value\n" ; } print "2-end\n"; my @array3 = sort { scalar @{$TmpList{$b}} <=> scalar @{$TmpList{$a}} or $a <=> $b } keys %TmpList; #Tie::IxHashモジュールで表示する際の順番を固定出来るかテスト foreach(@array3){ my $x="array$_\_n2"; $TmpList2{$_}=[(@$x)]; print "$_,$#{$x},@$x<br>\n"; } print "3-end\n"; __END__;

    • ベストアンサー
    • Perl
  • 5桁の数字…

    初めての質問でここでいいのかわかりませんが、教えてください。 5桁の数字が2つあり、それぞれa[1]…a[5]、b[1]…b[5]に格納する。 対応する桁どうし(a[1]とb[1])を比較して一致する桁の個数を求めるプログラムを擬似コードで表したいのです。 { 2つの桁の数を配列a,bに読み込む; count=0; i=i+1; while(i<=5) { if(a[i]==b[i])(??); else 誤ったデータの処理; } countの値を出力する; } ??の部分には何をいれればよいでしょう? また他のところでも間違いがあればご指摘お願いいたします。

  • 多次元配列?配列のキー?変数の型?

    PHP勉強中のものです。 予定通りの動作にならんく四苦八苦しています。 どのように修正すれば予定通りになるのか考え方のアドバイスなどお願いします。 処理したいこと 変数$xxxの先頭の文字と最後の文字をsubstr()で取り出し$aaaと$bbbに別けそれぞれ代入しキーとして多次元配列に代入した配列要素を指定してechoで出力したい 試してみたこと $aaa1と$bbb1に直接整数を代入してみたところ、echoで出力された キーになる変数を整数型として変数に代入してみたが希望通りの動作にならなかった。 なにかアドバイス頂けると助かります。 $array = array( "0" =>array("あいうえお","かきくけこ"), "1" =>array("さしすせそ") ); $xxx = "0-1"; $aaa = substr($xxx,0,1); $bbb = substr($xxx,2); $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない $aaa1 = 0; $bbb1 = 1; echo $array[$aaa1][$bbb1]; //出力された $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない

    • ベストアンサー
    • PHP
  • 配列の中に配列を入れて後で代入できるように残したい

    for($b=0;$b<$row;$b++) { //取得したレコード件数まで繰り返す $array = sqlite_fetch_array($result); $a=$array[0]; $x[$b]=null; //やり方が分からずとりあえず空白に $y[$b]=$a*$x[$b]; $sum[0] = array_sum($y); } $x[1]=3; //ここは$x[$b]=0,1 のできれば2択にしたかったんですがやり方が分からず困ってます $goukei=$sum[0]; if($goukei=<800 and $goukei>=600){ echo"$sum"; } $sum内の$x[$b]がループ後に代入可能な状態で格納する方法がありましたらどうか教えてください

    • 締切済み
    • PHP

専門家に質問してみよう