https://oshiete.goo.ne.jp/qa/9231613.html から
$test = array(0=>80,1=>60,2=>22,3=>50,4=>75); のご回答をもとに
$test = array(80,60,22,50,75);を$test = array(22,60,80,50,75);に変更しました。
結果が”最高得点22です。”と予想しておりました・・しかし、変わらずに
”最高得点は80です。”のままでした!?この場合ですが、考え方はとしまして、
$test = array(2=>22,1=>60,0=>80,3=>50,4=>75);となったので、以上の結果となっ
との考えで間違いないでしょうか?
よろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
表現は未熟ではありませんが、Campus2さんがどのような思考をしているのかという意味で
国語の問題に近いと言っただけですのでご了承を〜
ちなみに今回のはキーに関しては何でもいいのです。
以下のコードでも最高点は80と出力されます。
<?php
//$test = array(80,60,22,50,75);
$test = array("apple"=>80,"tomato"=>60,"banana"=>22,"milk"=>50,"cake"=>75);
$max = 0;
foreach($test as $id => $value){
if($max < $value) $max = $value;
}
print "<p>最高得点{$max}です。</p>";
?>
また$id => $valueも関係性を示しているだけなので、
foreach文は以下のようにも記述できます(紛らわしいのでこんな書き方しませんが)。
foreach($test as $aaa => $bbb){
if($max < $bbb) $max = $bbb;
}
///////////////////////////////////////////
過去の質問
https://oshiete.goo.ne.jp/qa/9200257.html
でも答えましたが、
例えば配列
array("22","80", "75","60","50")
はキーを何も指定しない場合以下と同じになります。
array('0' =>"22",'1' =>"80", '2' =>"75",'3' =>"60",'4' =>"50");
array("50","80", "75","60","22")
と並び変えても
array('0' =>"50",'1' =>"80", '2' =>"75",'3' =>"60",'4' =>"22");
のままです。
早々ご回答くださいまして誠にありがとうございます。
さて!生活面の日課等で現在取組ちゅです・・
落ち着いたところで、再度ご回答させていただきます。
その節はよろしくお願いいたします。
No.5
- 回答日時:
恐らく一つひとつの質問に答えていっても
根本的な土台としての知識不足のためうまく整理できていないようです。
補足の質問も回答者が読み解くにあたって
プログラミングよりも国語の問題にだいぶ近いです(スミマセン)
まずは「配列のキーとバリュー」とは何かについて
もう一度確認したほうがいいです。
探してみましたが以下のサイトはどうでしょうか?
http://bashalog.c-brains.jp/08/04/14-192257.php
キーというのはあくまでもバリューの「添字」でありまして
ある意味
0 =>バリュー だろうが apple =>バリュー でもいいのです。
決して
0 => というキーが最大を表す意味ではありません。
No.4
- 回答日時:
>0=>が最高得点だろうと思いまして
なるほど、なぜそう思っちゃったか共感はできませんが
そういう考え方もあるのですね
$max=0;
$test = array(2=>22,1=>60,0=>80,3=>50,4=>75);
foreach($test as $id => $value){
if($max < $value) $max = $value;
}
$testから1個データをとりだす
キー($id):2
値($value):22
その時点での最高点:$max(0)と$value(22)を比べて$valueが大きいので
最高点は22になります
ループして・・・
$testから1個データをとりだす
キー($id):1
値($value):60
その時点での最高点:$max(22)と$value(60)を比べて$valueが大きいので
最高点は60になります
以下同じ・・・
No.3
- 回答日時:
>結果が”最高得点22です。
”と予想しておりましたごめん、意味がよくわからない
もともと配列に入っている数字のなかで一番大きな点を抽出したい
ということをやっているんですから、データの順番がかわっても
一番大きな数は変わらないですよね?
逆にどういうロジックで22が最高点なると考えたのでしょうか?
No.2
- 回答日時:
間違いです。
print "<br/>最高得点{$max}です。<br/>\n";
↑で表示されるのは$maxの値です
$maxは↓の部分で代入されています。
どういう動作をしているか考えてみるとよろしいかと。
if($max < $test[$id])
$max = $test[$id];
ご回答くださいましてありがとございました。
ここで言いう
$maxは変数ですよね・・なので、関数ではないのでPHPのあらかじめプログラミングされているコードでは
判断できないと思うので
if($max < $test[$id])
$max = $test[$id];
はどういった理屈で最高得点とPHPは判断しているのでしょうか?
もう一つの私の疑問です。
そもそも以上の質問自体がおかしい内容でしたらご了承ください。
以上
よろしくお願いいたします。
No.1
- 回答日時:
まずプログラミング関係なしに
(22,60,80,50,75)の中で一番大きい数字は何? と聞かれたら80ですが
どうして22なのでしょうか?
特に指定しない限り、配列のキーはデフォルトで0,1,2と順番に割り当てられます。
なので(22,60,80,50,75)としても
キーは以下のように順番になります。
$test = array(0=>22,1=>60,2=>80,3=>50,4=>75)
ちなみに
キー => 値(バリュー)
という言葉の関係は覚えておいて下さい。
ご回答くださいましてありがとうございました。
さて
A;$test = array(0=>22,1=>60,2=>80,3=>50,4=>75)
以上ですが、ご質問があります。
一番低い数字がである、0=>22とした場合ですが、次の低い数字は”50”なのでその考をもとに
array(0=>22,2=>60,4=>80,1=>50,3=>75)となり
紛らわしいので以下の順番に並べました。
array(0=>22,1=>50,2=>60,3=>70,4=>80)
以上よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- システム ホームページの仕組みについて 3 2022/08/16 14:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- その他(プログラミング・Web制作) listへのappendが出来ない件 1 2022/12/06 21:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) VBAのフィルター操作 5 2023/08/08 09:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スカラーのベクトル微分
-
C言語で全角文字の扱いについて
-
verilogで、配列の一部をタスク...
-
MYSQLとPHPによって取得する多...
-
連想配列で値が空だったら、要...
-
行列
-
配列の要素(value)に、変数を...
-
Texでの数式
-
PHPでの簡易ビンゴゲームでの疑...
-
PHPでテキストファイルの一部を...
-
別ファイルの構造体の値を読み...
-
PHPで連想配列のプルダウンメニ...
-
配列を分解したいのですが
-
バイナリファイルの内容を、そ...
-
ヒアドキュメントの中のfor文
-
配列をループでたくさん宣言し...
-
複数行のデータのPOST処理に関して
-
配列を回すとき、最後の要素だ...
-
String だと「 ByRef引数の型が...
-
配列一致(要素順番は違うが内容...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スカラーのベクトル微分
-
STLのvectorで作った配列をメン...
-
特定の文からメールアドレスの...
-
配列の要素(value)に、変数を...
-
読み(あ行~わ行)ごとに分け...
-
ファイルの書き込みについて教...
-
verilogで、配列の一部をタスク...
-
CArrayの要素としてCStringArra...
-
pythonのnumpyでの繰り返しでの...
-
C言語の配列をPush(追加)する...
-
php キーソート キーが重複した...
-
CArrayのソート
-
【PHP】配列のキー名の修正は可...
-
多次元配列をエンコードする関...
-
PHPは何故値渡しより参照渡しの...
-
cakephpでのトランザクション処...
-
pg_copy_fromの使い方について...
-
array_intersectで空欄を比較し...
-
濁点のソート
-
配列中のあるキー、値を取得し...
おすすめ情報
yambejp様回答日時:23分前 ご回答くださいましてありがとうございました。
さて
Q:ロジックで22が最高点なると考えたのでしょうか?
以上のご質問のご答をいたします。
0=>が最高得点だろうと思いまして・・なので0=>20するために
array(20,60,80,50,75)したら、20が最高得点となると思い!
あえて、array(20,60,80,50,75)の順にな並び替え変えました。
よろしくお願いいたします。
皆様方々ご回答くださいまして誠にありがとうございます。
さて、私の知識不足と国語的な未熟な表現でご迷惑をおかけしております。
ご回答を資として
いろいろプログラムをいじってみて熟知したいと存じます。
解決までしばらくお待ちくださいませ!
過去の質問
https://oshiete.goo.ne.jp/qa/9200257.html
でも答えましたが
そうでした、わざわざ時間を費やしてご回答くださっていたのに・・もっと大事にします。
・foreachで$test配列の要素を順番に取り出します。
{ }内は配列の数(5つ)だけ繰り返され、今回の場合は以下の動作が5回繰り返されます。
{
・printでブラウザに表示。
・<tr><td>はHTMLでテーブルを意味する。
・$idには連想キー(01234)が入っています。
・$valueには要素(”80”,”60”,22","50","75")が入っています。
}
###
ちなみに
array(”80”,”60”,22","50","75")
は何も指定しない場合以下と同じです。
$test = array(0=>22,1=>60,2=>80,3=>50,4=>75)
narative_h様 おはようございます。さて、昨夜はうまくいかなかったのですが・・・本朝は
”画像を添付”のとおり、できました。材料が増え解決策が見つかりそうです。
暇暇いろいろ試したいと思います。解決までもうしばらくお待ちくださいませ。
皆様
貴重な時間を割いて、ご回答くださいまして誠にありがとうございました。
さて、この問題も私にとりましては、難題ですので色々いじった結果を元に「なんでこれをいじると、こんな値に変化するのだろう」・と納得がいくまでいじりたいと思います。
なので時間内での解決は無理と判断いたしましたのでここで一度〆ます。
もし、それから、何か自力で解決できない、疑問が生じた場合再度ご質問するかもしれませんがその節はよろしくお願いいたします。