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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

295閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/01/22 14:47

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

問題文

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

php

1if(abs(-100) > abs(-50)){ 2 print "AAA"; 3} 4 5if("abc" > "xyz"){ // (1 6 print "BBB"; 7}elseif ("576" < "890") { 8 print "CCC"; 9}

語群

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 技術者認定試験初級の(おそらく)唯一の公式の問題集なので、間違っていることはないのではと思っているのですが、ご回答お願いします。

php

1$num = 100; 2var_dump($num); 3 4$num = "100"; 5var_dump($num);

出力結果

int(100) string(3) "100"

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takepan1973

2020/01/22 21:29

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

退会済みユーザー

2020/01/23 00:42

整数値を文字列と比較したり、比較に数値形式の文字が含まれる場合は、文字列が 数値に変換され、 数値としての比較を行います。 とマニュアルには書いてあったのですが、正しい解説としてはどの様になるのでしょうか?
guest

回答3

0

ベストアンサー

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

投稿2020/01/22 15:22

javahack

総合スコア1088

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/01/22 15:34

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

0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

投稿2020/01/23 04:49

編集2020/01/23 04:50
m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/01/23 05:03

ご回答ありがとうございます。 現役エンジニアとしてありがたくお言葉を頂戴しました。 >答えだけ見て、解説を読み飛ばしたりしてませんか? 答えだけはみておらず、尚更解説を読み飛ばしたりはしていません。よって、この解説文をみたとき、この解説は適切ではないのではと思い質問をさせていただきました。 >四択一答の問題があったとして、 >正解の解答がなぜ正解なのか説明できますか? 一応、質問分でも他の選択肢は、以下の理由において無くなるのではという個人的なものを記述したのですが、少し説明不足だったようですね。失礼しました。 最初のabs関数では、絶対値を返すので、100 > 50となりtrueなのでAAAになることはわかったのですが、(1も理解済み >他の三つの解答はなぜ間違っているか説明できますか? 上記と同じ理由ですが。説明できます。 今回の場合elseifがtrueになる場合の解説がわからなく、質問させていただいた次第にあります。 質問への修正・追記欄にて takepan1973 2020/01/23 06:29 > 「567」と「890」では、「840」の方が大きい為、条件が成立します。 もし本当にこの通り記載があるのだとしたら、ただの誤植ですね。 とあります。この解説はあっているのか、否かも質問点の1つにありました。
m.ts10806

2020/01/23 05:12 編集

冒頭に書いた通り「どれくらい覚えているか」にのみ答えてます。 なぜ「覚える」という表現になったのか突き詰めた結果です。 そこから >PHP7 技術者認定試験初級の(おそらく)唯一の公式の問題集なので、間違っていることはないのではと思っているのですが に対する警鐘を鳴らしています。 盲信してはいけません。「お金とってるんだから絶対に正しい」と言い切ることはできませんからね。 間違いがないものはない。だから「第n版」と版を重ねてブラッシュアップをはかっているわけです。 むしろ「間違ってるんじゃない?」は出版元に問い合わせた方が、より広く寄与することになるので、teratailの質問で終わらせないで欲しいとは思ってます。
退会済みユーザー

退会済みユーザー

2020/01/23 05:21

ご確認ありがとうございます。 「覚える」という表現は適切ではありませんでした。前言撤回させていただきます。「理解する」という表現の方が適切なのでしょうか。 m.ts10806さんの仰る通り、盲信してしまった部分も少なからず自分にはありました。 >ご自身の今のスタンスは如何でしょうか。 >答えだけ見て、解説を読み飛ばしたりしてませんか? ここの部分だけ、私はその様なやり方をしておらず、理解して説明できる様に解説も読み、疑問に思ったから質問したという事だけ理解してもらえれば幸いです。 疑問に思う前に、マニュアルを調べて読むというフェーズがあればよかったのですが。。
m.ts10806

2020/01/23 05:46

>マニュアルを調べて読むというフェーズが 習慣付けるしかありません。 というか、あれは仕様書です。 システムに問題があったときにエンジニアが一番目に確認するのは設計書、仕様書です。
退会済みユーザー

退会済みユーザー

2020/01/23 06:14

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

2020/01/23 06:29

言語やフレームワークは関わらず。
退会済みユーザー

退会済みユーザー

2020/01/23 06:35

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

0

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

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

投稿2020/01/22 15:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/01/22 21:04

? 回答でもらった同じPHPマニュアルのページ参考に自己解決とは。
退会済みユーザー

退会済みユーザー

2020/01/23 00:45 編集

あとで自身が見返したとき、後者が見返したときに引用文を書いた方が分かり易いと思い、その様に至りました。 すいません。変更しておきます。
m.ts10806

2020/01/23 01:07

そういうときは回答にコメントつける方が賢明です。別途回答をおこしてしまうと情報が散らばるので他者がみたときに分かりにくいです。
退会済みユーザー

退会済みユーザー

2020/01/23 04:08

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

2020/01/23 04:12

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

退会済みユーザー

2020/01/23 04:25

仰るとおりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問