PHPのプログラム実行方法を選ぶ際の良い選択肢とは?

このQ&Aのポイント
  • PHPのプログラム実行方法は2つありますが、どちらを選んでも同じ結果が得られます。
  • PHPのプログラム実行方法を選ぶ際、どちらを選んでも問題ありません。
  • PHPのプログラム実行方法には違いがありますが、結果は同じです。
回答を見る
  • ベストアンサー

よくわからなかったので試してみました。

<?php if (isset($default)){ $param = $argv[1]; } else{ $param = 'default'; } ?> --------------------------------------------- <?php if (isset($argv[1])){ $param = $argv[1]; } else{ $param = 'default'; } <? ------------------------------------------- 以上実行結果は同じですが、プログラムを組む場合とくどちらを選択しても  宜しいのでしょうか!? 以上よろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数13

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

「たまたま1例での実行結果が一緒になった」 ということと 「常に実行結果が一緒になる」 ということを、きちんと区別しなければなりません。 後者なら入れ替えが可能です。 あなたの書いた例は「前者」です。 あなたが実験したときは「たまたま一致した」だけで、常に一致するものではありません。 よって、入れ替えはできません。 算数で例えるなら 2÷1=2 2×1=2 「以上計算結果は同じですが、どちらを選択しても宜しいのでしょうか!?」 と質問するようなものです。

Campus2
質問者

お礼

ご回答誠にありがとうございました。 アンス: 2÷1=2 2×1=2  なるほどですね^^  そんな意味合いがあるのですね! だから両方とも結果が同じ    文章的に違いは判りましたが、結果が同じでしたのでついつい疑問に思いました。

その他の回答 (2)

noname#244856
noname#244856
回答No.3

もし $argv[1] が存在していれば、$param に $argv[1]を代入。 存在していなければ、 $param に 'default' を代入。 もし $default が存在していれば、$param に $argv[1]を代入。 存在していなければ、 $param に 'default' を代入。 1番目はちゃんとした処理になっていますが、2番目って意味不明じゃないですか?書いてて自分で思いませんかね…もしこれで何もこういった疑問を感じなかったのであれば、あなたは自分の書いたコードが読めないことになります。

Campus2
質問者

お礼

 毎同ご回答、誠にありがとうございました。  アンス:  もし $default が存在していれば、$param に $argv[1]を代入。 存在していなければ、 $param に 'default' を代入。   とても分かりやすいご回答です。  if・elseの意味はC言語で学びました。  エラーがでなかったので・”なんでかな”と思いもありました。 2÷1=2 2×1=2  の違いとのご回答でたまたまエラーが出なかった!とのことだそうです。    めげずに頑張ります。  こんごとも、ご声援よろしくお願いいたします。

  • jx4076
  • ベストアンサー率15% (89/575)
回答No.1

よくわからなかったので試してみました。 質問件名からは、質問内容が良くわからないですね。

関連するQ&A

  • 条件演算子

    <?php $param = isset( $argv[1] ? $argv[1] : 'default'; と(And) !  <?php if (isset( $argv[1])) {    $param = $argv[1]; } else { $param = 'default'; } 以上2件のプログラは全く同じロジックだそうです。  皆様はどちらを使いますか!?     よろしくお願いします。  

    • ベストアンサー
    • PHP
  •  三項演算子で違いが判らない

     三項演算子で 変数「$data」>=10 の場合”10以上”、それ以外なら”10以下”と表示する。 <?php $data = 15; $str = ($data >= 10)?"10以上":"10以下"; print $str; ?>  以上は理解できます。  しかし以下はほとんど理解できません!? <?php if (isset($argv[1])){ $param = $argv[1]; } else {     $param = 'default'; } 二つは同じ三項演算子で同類ということですが、  アバウトな質問のような気がしますが、違いを教えていただけますか!  よろしくお願いします。

    • ベストアンサー
    • PHP
  • $argv[1]) && $argv[1]・同じ

     以下のプログラムですが! <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の真だから、  "与えられた引数は真です"と出るのではないんでしょうか!?  以上よろしくお願いします。

    • ベストアンサー
    • PHP
  •  %php stringcast.php 100

    <?php // stringcast.php if (!isset($argv[1])) { exit; } $num = $argv[1]; if ($num == 100) { echo "num is 100", PHP_EOL; } else { echo "num is not 100",PHP_EOL; } このプログラムを %php stringcast.php 100のように実行すると、引数の100は PHPには文字列型として渡されます。・・・  以上参考書にあります。  作業の流れが分かりません。  %php stringcast.php 100とは!何のことなのでしょうか!?  以上宜しくお願いします。

    • ベストアンサー
    • PHP
  • = $argv[1];はどんな働きがありますか!?

    <?php // stringcast.php if (!isset($argv[1])) { exit; } $num = $argv[1]; if ($num == 100) {  ←(1) echo "num is 100", PHP_EOL; } else { echo "num is not 100",PHP_EOL; } このプログラムを %php stringcast.php100 のように実行する、引数の100はPHP文字列型として渡されます。  したがって、(1)の比較では、文字列"100"の入って変数$numと、整数100が比較されるため、 文字列"100"は整列100へとキャストされまた後、比較演算が実行されます。  今回は、動作の結果に違いはありませんが、ここで整数同士を比較しているつもりでも実際には 文字列を整数の比較が行われ、キャストが発生している、という挙動を把握しているか、していない かではなく大きな違いがあります。引数とし期待している値の型が決まっている場合、明示的にキャ ストを行い、厳密な比較演算子(===など)を用いるほうが安全です。 -------------------------------------------------------- 以上、参考書をまるごと入力しました。  そこで $num = $argv[1];で!$argv[1]とはこのプログラムではどんな働きがあるのでしょうか!?  ($argv[1];を$numに代入だと思います。間違っていたなら御免なさい。)  宜しくお願いします。  なお・批判的なご回答はお控えくださいませ。  

    • ベストアンサー
    • PHP
  • どうしたら確認ができますか!?

    以下参考書をそまま入力しました。 ] ---------------------------------------------------  論理積と論理和では、2通りの表記方法がありますが、これは演算子の優先順位(注6)が違います。 (注意6)優先順位については3.2.3(P80)を参照 <?php $flag and foo(); if(isset($argv[1] && $argv[1] { echo '与えられた引数は真です',PHP_EOL; } else{ echo '引数が与えられていないか、与えられた引数が真ではありません' ,PHP_EOL; }  この列では、引数が与えられているかをまずチェックし、与えられている場合はそれが真である かを調べます。論理演算子では、評価結果がわかった時点で演算結果を返します。これを短絡評価 といいます。短絡評価されるため、最初のisset($argv[1])が為である場合、次の$argv[1]の評価 は一切行われません(もし評価されてしまったならば、NOtic:Undefined offset:1となってしまい ます)。  たとえば、次の例では、$flagが為の場合では、関数foo()が呼ばれることはありません。 <?php $flag and foo();   ----------------------------------------------------------- 以上ですが、 これって、どうしたら確認ができますか!?   xamppは働いています。    HTMLで試しましたがParseエラーがでました。 <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> 以上の実行結果は 以下です。 Parse error: syntax error, unexpected '&&' (T_BOOLEAN_AND), expecting ',' or ')' in C:\xampp\htdocs\study.localhost\php.php on line 10  以上です。    よろしくお願いします。  

    • ベストアンサー
    • PHP
  • 私の考えがそもそも、間違っていたならごめんなさい。

     まだまだ素人ですが! <?php $var = 1; var_dump(isset($var)); // true var_dump(isset($var1); // fals   以上参考書のプログラムです。 以上プログラムの最後に echo 何々; と組めば実行結果が得られる代物でしょうか!  すみません!  参考書では isset() の説明をしているのですが、私としては、実行結果を知りたいです。 私の考えがそもそも、間違っていたならごめんなさい。  宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • $argv[1] の真偽判定

    PHPの勉強を始めた初心者です。 次のようなスクリプトを書いてみたのですが、false と入力しても、真と判定されてしまいます。 何故こうなるのか、お教えいただければ幸いです。 <?php // p075_a.php if( isset($argv[1]) && $argv[1] ) { echo "与えられた引数は真です\n"; } elseif ( isset($argv[1]) && !$argv[1] ) { echo "与えられた引数は偽です\n"; } else { echo "引数が与えられていません\n"; } [study_php@localhost ch03]$ php p075_a.php '' 与えられた引数は偽です [study_php@localhost ch03]$ php p075_a.php "" 与えられた引数は偽です [study_php@localhost ch03]$ php p075_a.php 0 与えられた引数は偽です [study_php@localhost ch03]$ php p075_a.php 0.0 与えられた引数は真です [study_php@localhost ch03]$ php p075_a.php false 与えられた引数は真です [study_php@localhost ch03]$

    • ベストアンサー
    • PHP
  • PHPのif文「POSTしていない場合」

    PHPの初心者です。 HTMLのフォームでsubmitが押されたかの判定を if (isset($_POST['submit'])){ print"押されました"; }else{  print"押されてません"; } という、形でやってきたのですが、 yes側に押していない場合を設定してelse側に押した場合を記述したいのですが、if文で「submitが押されていなかったら」とはどのように書けばいいでしょうか?

    • ベストアンサー
    • PHP
  • isset関数の動作と入力チェックについて

    issetの動作について疑問に思った事があるので、質問させて下さい。 以下のようなテスト用のphpを作成しました。 issettest.php <?php $a = $_GET["a"]; if(isset($_GET["a"])){ echo "\$GETに[".$_GET["a"]."]が入っています。<br>"; } if(isset($a)){ echo "\$aに[".$a."]が入っています。<br>"; } if(!isset($_GET["a"])){ echo "\$GETは空です。<br>"; } if(!isset($a)){ echo "\$aは空です。<br>"; } ?> ./issettest.php と実行すると、 $GETの値は空です。 $aの値は空です。 ./issettest.php?a=test と実行すると $GETに[test]が入っています。 $aに[test]が入っています。 ./issettest.php?a= と実行すると $GETに[]が入っています。 $aに[]が入っています。 となります。 これがissetの正常な動作なのでしょうか? 例えば、入力フォームを使いGETやPOSTでの値を送信する場合、入力フォームに値が入力されたかどうかを判定するにはissetは使えないのでしょうか? わかりづらい質問で申し訳ありませんが、先輩方の回答お待ちしています。 質問に不備などありましたらご指摘下さい。

    • ベストアンサー
    • PHP

専門家に質問してみよう