質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.78%

数値の比較ではなく文字列の比較なのか

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 556
退会済みユーザー

退会済みユーザー

PHP7の問題集を購入し、どれくらい覚えているかの認識確認で行なっていたのですが、少し不明な点がありましたので、質問させていただきます。

問題文 
次のコードを実行した結果として正しいものを選択してください。

if(abs(-100) > abs(-50)){
  print "AAA";
}

if("abc" > "xyz"){ // (1
  print "BBB";
}elseif ("576" < "890") {
  print "CCC";
}


語群

A. AAABBBCCC
B. AAABBB
C. AAACCC
D. BBBCCC
E. AAA
F. BBB
G. CCC

答えは、CのAAACCCです。

最初のabs関数では、絶対値を返すので、100 > 50となりtrueなのでAAAになることはわかったのですが、(1も理解済み
else ifの場合trueとなりCCCとなるのでしょうか?

もちろん解説があるので、読んだ所

elseif文では、数値と数値を比較します。「567」と「890」では、「840」の方が大きい為、条件が成立します。

ここで、疑問に思いました。二重引用符での値となっている訳ですから、integerではなくましてや浮動小数点ではないと。では、この型は文字列なのではないかと思い、
var_dumpすると、stringであり文字列でした。
この本にある、解説は間違っているのでしょうか?
PHP7 技術者認定試験初級の(おそらく)唯一の公式の問題集なので、間違っていることはないのではと思っているのですが、ご回答お願いします。

$num = 100;
var_dump($num);

$num = "100";
var_dump($num);


出力結果

int(100) string(3) "100"

`

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • takepan1973

    2020/01/23 06:29

    > 「567」と「890」では、「840」の方が大きい為、条件が成立します。
    もし本当にこの通り記載があるのだとしたら、ただの誤植ですね。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2020/01/23 09:42

    整数値を文字列と比較したり、比較に数値形式の文字が含まれる場合は、文字列が 数値に変換され、 数値としての比較を行います。

    とマニュアルには書いてあったのですが、正しい解説としてはどの様になるのでしょうか?

    キャンセル

回答 3

checkベストアンサー

+2

仕様に疑問があるときはマニュアルをチェックしましょう。
比較演算子

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/23 00:34

    確認しました。ありがとうございます。

    キャンセル

+1

PHP7の問題集を購入し、どれくらい覚えているかの認識確認

ここだけに答えると、「覚えているか」に頭がなってしまっている時点で恐らく単なる試験勉強に成り下がっています。

プログラミングで大事なのは「なぜそうなるか」「なにをするものなのか」を認識し、理解し、実践することです。
過去問題集での懸念点は「問題と答えをセットで覚える」に陥りがちな点です。
ひどいときは問題と答えの選択番号のみを記憶してしまうことだってあります。

果たしてそれで実際の開発の役に立つのでしょうか。
理想は問題集なしでも初級認定を得ることだと思ってます(一応私は5も7も問題集なしで得ました)。

単に初級認定とりたいだけなら「覚える」で良いでしょう。履歴書にも書けます。「ああそれくらいはできるのね」と企業の技術担当にも伝わります。
でもその実態が単に答え丸暗記で通っただけだったとしたら?

現場では使えませんよね。PHPマニュアルの活用も頭にないのでしたら尚更です。
今のところメジャーとは言えないベンダー資格故に、企業でこの認定試験の補助を出しているところは多くないと思います。
初級ですら12000(+税)かかりますからね。

でも、その認定を得ると言うことは、それなりに現場でも使えると言う目線で見られるわけです。期待も大きいわけです。

ご自身の今のスタンスは如何でしょうか。

答えだけ見て、解説を読み飛ばしたりしてませんか?
四択一答の問題があったとして、
正解の解答がなぜ正解なのか説明できますか?
他の三つの解答はなぜ間違っているか説明できますか?

もっと言えば、7の認定はまだ始まって1年も経っていません。試験機構もかわり、問題も刷新されました。完全とは言えません。
解答に不備があった場合、それを発見して、機構側に指摘できますか?

※一応私は、試験後、気になった点を問い合わせから送りました

プログラミングを身につける際に認定試験をうけるのは非常によい心がけだと思います。
企業でも若手にJavaやOracleの試験を受けさせるようにすすめているところもあります。
でも試験に通ることが目的では、それ以下にしかなりません。

結構います。
基本情報とりました、と高らかに言うけど全然活きてない人(応用とる人はできた人が多いとは思います)

生かすも殺すもその人次第。
なんためにお金も時間もかけて取ろうと思ったのか、原点に還られては。

※結局のところ他人なので本来どうなろうと知ったこっちゃないですが、エンジニアとしてやっていくつもりの人であれば絶対に関わらないとは言えないので、姿勢に疑問を持った場合はかなり厳しめに突っ込みます
(見込みなしと思えば関わることは一生ないので途中で引きます)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/23 15:14

    >というか、あれは仕様書です。
    なるほど。今回は型しか見ていなかったです。
    https://www.php.net/manual/ja/language.types.php
    習慣付けないと。。
    CSSではプロパティなどマニュアルを読む事を習慣づけたのですが。

    キャンセル

  • 2020/01/23 15:29

    言語やフレームワークは関わらず。

    キャンセル

  • 2020/01/23 15:35

    システムに問題・仕様に疑問を感じ際はまず必ず目を通したいと思います。

    キャンセル

-3

以下の様に書いていました、
マニュアル 

整数値を文字列と比較したり、比較に数値形式の文字が含まれる場合は、文字列が 数値に変換され、 数値としての比較を行います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/23 13:08

    ご指摘ありがとうございます。
    今後は改善いたします。

    キャンセル

  • 2020/01/23 13:12

    そうですね。
    そもそも「PHPマニュアルを確認しましょう」と言われたのは一度ではないと思いますよ。

    キャンセル

  • 2020/01/23 13:25

    仰るとおりです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る