![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_05.png?5a7ff87)
以下の文を実行すると、$abcには「3」があるので、TRUEになるはずなのですが、
エコーすると「1」と記載されます。
<?php
$abc = "283743";
$abc = ereg("3",$abc);
echo $abc;
?>
以下の文を実行するとエコーしても何も表示されません。
「0」は該当しないので、FALSEと表示されると思うのですが・・。
<?php
$abc = "283743";
$abc = ereg("0",$abc);
echo $abc;
?>
ネットで調べると、それぞれTRUEとFALSEを返すと記載がありました。
それなのになぜ「0」と「何もなし」になるのでしょうか。
No.3ベストアンサー
- 回答日時:
まず、eregの戻り値ですが
・マッチした場合は int型の1を返して
・マッチしない場合は bool型のfalseを返す
ようですね(CentOS-CLI版PHP5.2.5で確認)
・・・マニュアルの該当部分を見ると
確かに int で返ると書いてありますが、どうもマニュアルと違うようです・・・。
で、それらが返るとしてechoで表示されない理由ですが
int(1)の場合とfalseの場合で理由が異なります。
まず、falseですが
echo false;
とやると、falseがstring型へ自動型変換という手順を踏んでechoの対象になりますが
PHPの場合は falseをstring型へ変換すると ""(空文字列)になります。
(別の言語では"false"という文字列に変換されるものが多いですね)
よって、出力されません。
次に、int(1)が出力しない理由ですが
> echo $abc;
の部分を
echo $abc . "\n";
として動作確認して貰っていいでしょうか?
多分それで"1"と表示されるようになるはずです。
なぜ、改行文字をつけないと出力されないのかは
理由がわかりません・・・。
No.2
- 回答日時:
ここをよく読みましたか?
return は int って書いてますよ。
$abc = "283743";
$abc = ereg("3",$abc);
echo $abc;
↑これが 1 と表示するのは仕様上正確な返りです。
boolで返す関数もありますし、intで返す型も混在しています。関数ごとに返りの型は違いますので、確認しながら使ってください。
ereg()は、intで返す関数ですよ。
また、返り値を正確に目で見たいのであれば
var_dump($abc);
を使ってください。
$abc = "283743";
$abc = ereg("0",$abc);
var_dump($abc);
とやれば、表示としては
bool(false)
と表示されます。
No.1
- 回答日時:
別に、「true」とか「false」とかいう文字列を返すわけではなく
論理型のtrue値もしくはfalse値を返しており、echoで表示する際に、
可視化しているだけでしょう。
プログラム言語によってその辺の仕様はことなり、
「PHPではそういうもの」と考えるのが賢明でしょう。
この辺を参考に
http://www.php.net/manual/ja/language.types.bool …
キャストについては
http://www.php.net/manual/ja/language.types.type …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/10 08:51
- 英語 固有名詞を小文字で書くのは違反? 4 2023/04/09 01:34
- PHP PHPでMysqlにデータがあるかどうか判別したい 1 2023/03/02 11:48
- Excel(エクセル) EXCELで同一セル内で自動的に改行されてしまう(難問) 6 2023/04/16 00:51
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/03/09 14:24
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 08:37
- 数学 スカラー三重積 [ABC]の括弧[ ]をグラスマン記号と言うと思います。 そこで、一般に[ABC]を 1 2023/07/20 10:24
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
バッチファイルでpingの結果を...
-
findstrのerrorlevel
-
shシェルスクリプト 空白行の...
-
switch()文で値の大小比較
-
htmlで複数の個数入力欄を表示...
-
pdftkを使った処理をバッチファ...
-
phpでcookieがうまく保存されない
-
環境変数「%USERPROFILE%」の内...
-
小数点以下0の非表示
-
オブジェクトの中身の判定(PHP)
-
変数の中の<br>を消したい
-
1週間カレンダー
-
ヌルバイト攻撃の対策について
-
PHP5で正規表現を使った文字の...
-
[シェルスクリプト]ファイル変...
-
syntax error, unexpected 'ech...
-
foreachで回った数を表示したい
-
PHP 九九表
-
PHPで$_GET[’m’]の意味が分か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
findstrのerrorlevel
-
syntax error, unexpected 'ech...
-
小数点以下0の非表示
-
バッチファイルで、全てのウィ...
-
オブジェクトの中身の判定(PHP)
-
PHPで訪問回数を表示するカウン...
-
ゼロとNULLを区別して number_f...
-
bashの関数の引数にスペースが...
-
ナベアツプログラム(3の倍数...
-
変数の受け渡しによる画像の表示
-
PHP一覧表示した項目にリンクを...
-
Windowsのsetコマンドでの小数...
-
Parse error というエラーの対...
-
pdftkを使った処理をバッチファ...
-
DBのハッシュ化したパスワード...
おすすめ情報