重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

PHPで関数の引数に渡すとき、以下のように$aaを$aとしてしまった場合に
関数内の$idは値がありませんが、関数内でこれを検出することができるのでしょうか?

Perlなら use strict;とし、my等で定義されていない変数はすべて警告表示されますが、PHPはスルーです。

変数など厳密なプログラムが書きたいのですが、どうすればよいでしょうか?

$aa = 1;
test($a)
function test($id){
...
}

A 回答 (2件)

E_NOTICEレベルでエラーを検出すればよいでしょう。



<?php
error_reporting(E_NOTICE);
//もしくはerror_reporting(E_ALL);
$aa = 1;
test($a);
function test($id){
print $id;
}
?>
    • good
    • 0

仰っている質問の定義が曖昧です。


PHPは宣言が必要ありませんし、変数宣言によるエラーはありません。

>変数など厳密なプログラム
という点が特に曖昧なのですが、これは「変数の値があるか否かの制御」ともとれますし、「変数自体が使われているか否か」の制御ともとれます。

まぁ何れにしても、「誤って実際と違う変数名を使用した場で、その変数は宣言されたと同義」ですので、後者はないものと考えた方が宜しいかもしれません。(少なくとも私にはわかりません。)

変数の中身があるか否か、という点に絞れば

「empty」か「isset」を使ってやるのが適当かと思います。

//$aの値が空・0でない場合の処理
if(!empty($a)){

}

のように使用します。

これでも制御は可能かと思いますが如何でしょう?
    • good
    • 0

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