プロが教える店舗&オフィスのセキュリティ対策術

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);となったので、以上の結果となっ
との考えで間違いないでしょうか?
 よろしくお願いいたします。

質問者からの補足コメント

  • yambejp様回答日時:23分前 ご回答くださいましてありがとうございました。
     さて
    Q:ロジックで22が最高点なると考えたのでしょうか?
     以上のご質問のご答をいたします。
    0=>が最高得点だろうと思いまして・・なので0=>20するために
    array(20,60,80,50,75)したら、20が最高得点となると思い!
    あえて、array(20,60,80,50,75)の順にな並び替え変えました。
     よろしくお願いいたします。

      補足日時:2016/04/06 12:47
  • 皆様方々ご回答くださいまして誠にありがとうございます。
     さて、私の知識不足と国語的な未熟な表現でご迷惑をおかけしております。
     ご回答を資として
    いろいろプログラムをいじってみて熟知したいと存じます。
    解決までしばらくお待ちくださいませ!

      補足日時:2016/04/06 16:44
  • 過去の質問
    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)

      補足日時:2016/04/07 21:55
  • narative_h様 おはようございます。さて、昨夜はうまくいかなかったのですが・・・本朝は
    ”画像を添付”のとおり、できました。材料が増え解決策が見つかりそうです。
    暇暇いろいろ試したいと思います。解決までもうしばらくお待ちくださいませ。

    「$test = array(80,60,」の補足画像4
      補足日時:2016/04/08 05:55
  • 皆様
    貴重な時間を割いて、ご回答くださいまして誠にありがとうございました。
    さて、この問題も私にとりましては、難題ですので色々いじった結果を元に「なんでこれをいじると、こんな値に変化するのだろう」・と納得がいくまでいじりたいと思います。
     なので時間内での解決は無理と判断いたしましたのでここで一度〆ます。
    もし、それから、何か自力で解決できない、疑問が生じた場合再度ご質問するかもしれませんがその節はよろしくお願いいたします。

      補足日時:2016/04/11 22:12

A 回答 (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");
のままです。
    • good
    • 0
この回答へのお礼

早々ご回答くださいまして誠にありがとうございます。
さて!生活面の日課等で現在取組ちゅです・・
 落ち着いたところで、再度ご回答させていただきます。
 その節はよろしくお願いいたします。

お礼日時:2016/04/06 17:54

恐らく一つひとつの質問に答えていっても


根本的な土台としての知識不足のためうまく整理できていないようです。
補足の質問も回答者が読み解くにあたって
プログラミングよりも国語の問題にだいぶ近いです(スミマセン)

まずは「配列のキーとバリュー」とは何かについて
もう一度確認したほうがいいです。

探してみましたが以下のサイトはどうでしょうか?
http://bashalog.c-brains.jp/08/04/14-192257.php

キーというのはあくまでもバリューの「添字」でありまして
ある意味
0 =>バリュー だろうが apple =>バリュー でもいいのです。
決して
0 => というキーが最大を表す意味ではありません。
    • good
    • 0

>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になります

以下同じ・・・
    • good
    • 0

>結果が”最高得点22です。

”と予想しておりました

ごめん、意味がよくわからない
もともと配列に入っている数字のなかで一番大きな点を抽出したい
ということをやっているんですから、データの順番がかわっても
一番大きな数は変わらないですよね?
逆にどういうロジックで22が最高点なると考えたのでしょうか?
    • good
    • 0

間違いです。




print "<br/>最高得点{$max}です。<br/>\n";

↑で表示されるのは$maxの値です

$maxは↓の部分で代入されています。
どういう動作をしているか考えてみるとよろしいかと。

if($max < $test[$id])
 $max = $test[$id];
    • good
    • 0
この回答へのお礼

ご回答くださいましてありがとございました。
 ここで言いう 
$maxは変数ですよね・・なので、関数ではないのでPHPのあらかじめプログラミングされているコードでは
判断できないと思うので
 if($max < $test[$id])
 $max = $test[$id];
 はどういった理屈で最高得点とPHPは判断しているのでしょうか?
 もう一つの私の疑問です。
  そもそも以上の質問自体がおかしい内容でしたらご了承ください。
 以上 
  よろしくお願いいたします。

お礼日時:2016/04/06 13:06

まずプログラミング関係なしに


(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)

ちなみに
キー => 値(バリュー)
という言葉の関係は覚えておいて下さい。
    • good
    • 0
この回答へのお礼

ご回答くださいましてありがとうございました。
 さて
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)
 以上よろしくお願いいたします。

お礼日時:2016/04/06 12:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!