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

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

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

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

Q&A

2回答

1190閲覧

PHP echo strcmp(2, "2member"); //-6

marimokomokmOk

総合スコア52

PHP

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

0グッド

0クリップ

投稿2017/04/12 03:30

何故これが-6になるのでしょうか。

php

1echo strcmp(2, "2member"); //-6

"a" と "ab"だったら "ab"の方が大きいのでしょうか。
どのような規則があるのでしょうか。

php

1echo strcmp("a", "ab"); //-1

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

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

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

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

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

guest

回答2

0

一般的には辞書式順序に従って並べたときの前後関係で比較します。
この場合、両者の文字数が異なる場合は、短いほうの末尾に(長さが同じになるように)空白が付与されたものとして取り扱います。
つまり、"a" は "a " として "ab" と比較します。" " は "b" より文字コードとしては小さいので、"a" < "ab" になるのです。

余談:
上の条件に従うと、
1
10
2
という並び順になります。
これだと少々問題がある場合は、PHP なら Collator クラスを利用することで、
1
2
10
と並ぶようにできたりします。

さらに余談

(2 == "2member") は true になります。
これは数値と文字列を比較演算子の == で比較する場合、文字列を数値に変換して処理する(ために member が無視されて 2 となる)という動きをするからです。
(2 === "2member") は、型が違うので false となります。

投稿2017/04/12 03:58

編集2017/04/12 04:27
tacsheaven

総合スコア13703

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

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

marimokomokmOk

2017/04/12 06:52

丁寧にご教示下さりありがとうございます なぜ echo strcmp("a", "ab"); //-1なるか意味が理解できました^^ なぜ echo strcmp(2, "2member"); //-6 になるか謎です
tacsheaven

2017/04/12 06:55

strcmp の場合は文字列と文字列の比較です。strcmp(2, "2member") は、最初の引数の 2 を文字列に変換して、strcmp("2", "2member") として処理されるので、<0 な値が返ります。なぜこれが -6 なのかは……実装依存なのです。言えるのは <0 の値が返るという仕様は満たしている、というだけです。
guest

0

int strcmp ( string $str1 , string $str2 )

str1 が str2 よりも小さければ < 0 を、str1が str2よりも大きければ > 0 を、 等しければ 0 を返します。

php

1echo strcmp(2, "2member"); //-6 2echo strcmp("a", "ab"); //-1 3```合ってますよね? 4同じ文字数になるまで`null`が追加されるようなイメージですよね。

投稿2017/04/12 03:59

shi_ue

総合スコア4437

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問