以下のプログラムですが!
<html>
<head>
<meta "charset=utf-8" />
<title>論理演算子</title>
</head>
<body>
<?php
if(isset($argv[1]) && $argv[1]) {
echo '与えられた引数は真です',PHP_EOL;
}
else{
echo '引く数が与えられていないか、与えられた引数が真ではありません' ,PHP_EOL;
}
?>
</body>
</html>
以上のプログラムの実行結果は以下となりました。
引く数が与えられていないか、与えられた引数が真ではありません
以上の実行結果は”真でありません”と出ています。
$argv[1]) && $argv[1]・・・&&は理論積の、両辺は同じなのでtrueならばtrueの真だから、
"与えられた引数は真です"と出るのではないんでしょうか!?
以上よろしくお願いします。
No.1ベストアンサー
- 回答日時:
【Webブラウザから実行した】
変数 $argv に値を格納する手段がないので、elseブロックしか実行されません。
【コマンドラインから実行した】
第1引数は $argv[1] として格納されます。もしそれが真と評価される文字列であった場合、ifブロックが実行されます。偽と評価される文字列であったもしくは引数を何も渡さなかった場合、elseブロックが実行されます。
>> $argv[1]) && $argv[1]・・・&&は理論積の、両辺は同じなのでtrueならばtrueの真だから、
メチャクチャです。分割するところもおかしいですし…もとより、
「ソースコードを比較しているのではない」
と言ったほうがいいでしょうか。もし
「どっちも $argv[1] と書かれているから $argv[1] && $argv[1] は常に真となる」
と言うのであれば、プログラミングの根幹となっている “変数” の概念すら否定することになりますよね。変数で重要なのは変数名ではなくてそこに格納された値です。
(PHPの場合は変数名が重要になることもありますが、このシーンでは関係ありません)
毎同
ご回答誠にありがとうございました。
きむづいですね_ _
最初のご回答様に補足しましたが、レスがございませんでしたので、
再度レスを立ち上げます。
とりあえず、解決とさせていただきます。
今後ともよろしくお願いいたします^^
No.2
- 回答日時:
>$argv[1]) && $argv[1]
この切り方がそもそもダメダメです。&&の直前の閉じ括弧に対応する括弧がありますよね。
>isset($argv[1]) && $argv[1]
isset($argv[1]) と、$arg[1] の論理積です。けっして
>両辺は同じ
ではありません。
$arg[1] という変数が存在し、NULL以外の値であり(isset($arg[1]))、なおかつ$arg[1] が空文字列や"0"ではない(論理値として真の値になる)ときに『与えられた引数は真です』となります。
そもそも$arg[1] という変数が存在しない状態では『引数が与えられていない』ことになります。
当然ですが、issetでチェックしないと変数が存在しないときにUndefined variablesのwariningになります。外部から与えられる変数は存在するかどうかをissetでチェックせず扱ってはいけません。
この回答への補足
ありがとうございます。
”与えられた引数は真です”
と出すには、どんなプログラムを組めば出るのでしょうか!?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPプログラムの間違い 1 2022/10/06 14:33
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP php ログイン 1 2022/11/01 00:24
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# c言語 配列とポインタについて 3 2023/02/09 22:53
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでのdeadlockをPHPで検出...
-
PHPでサーバーにインストールさ...
-
PHPからCプログラムを実行して...
-
【PHP】命令は記述順に処理...
-
PHPで外部プログラムのバックグ...
-
phpからエクセルのマクロを実行...
-
copy() で属性保存
-
JSのWINOW.CONFI...
-
シェルスクリプトをPHPで動かそ...
-
query、prepare、executeの違い
-
PHPの自動実行
-
PHPファイルをCron設定からのみ...
-
[cakePHP]外部ファイルの実行方法
-
実行ユーザー切り替え方法
-
PHPからlhaコマンドを使いたい
-
PHPからバッチファイルの実行
-
onedrive にexcelファイルをア...
-
.phpと.incファイルの違いはな...
-
フォントの色を変えるには?
-
CFileDialogの最初のディレクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql複数レコードをまとめて削...
-
php実行中に実行中のphpファイ...
-
phpからエクセルのマクロを実行...
-
ヒアドキュメントの中で演算子...
-
PHPからバッチファイルの実行
-
PHPのコマンドをnobodyオーナで...
-
copy() で属性保存
-
$argv[1]) && $argv[1]・同じ
-
PHPで外部プログラムのバックグ...
-
Prompt入力値をphp変数として取...
-
PHPでサーバーにインストールさ...
-
PHPで、C#のプログラムを実行す...
-
query、prepare、executeの違い
-
require_onceが動いていない
-
現在、レンタルサーバ(コアサー...
-
IIS + PHP からのWindowsコマン...
-
phpスクリプトのみで定期実行
-
【PHP】命令は記述順に処理...
-
PHP(Windows)でコマンド実行
-
PHPでコマンドプロンプトを実行...
おすすめ情報