• ベストアンサー

二つの条件を一度に行うには?

リファレンスブックなどで調べたのですが自力の解決には至らず質問させていただければと思います。 2つの条件をPHPで一度に行うにはどうしたらいいのでしょうか? 例えば if(isset($58)){ if($58 == "1"){ $a = "n"; }else{ $a = "y"; } echo $a; } な感じです。恥ずかしながらまったくの初心者で見てのとおり動いてはくれません。 この機能を実装するにはそのように書けばいいのでしょうか?

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

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

  • ベストアンサー
  • 0x131cc6e
  • ベストアンサー率36% (42/115)
回答No.3

#1です。 相変わらずわからないのですが、「一度に行う」というのはif...if...と何度も書かずに一撃で判定してしまいたいということですか? もしそうなら次のように書きます。 if ( 条件1 && 条件2 && 条件3 ) {  //すべての条件が合致する場合の処理 } else {  //条件が一つでも合致しない場合の処理 } >$58に値が入っている場合、もし$58が1だったらnを出力、そうではない場合はnを出力 んん?? 両方ともnを出力するの? yでしょ?(笑) ということで、次のように書けます。 if ( isset( $58 ) && $58 == "1" ) {  $a = "n" ; } else {  $a = "y" ; } echo $a ; また、三項演算子を使えば次のようにも書けます。 echo ( isset( $58 ) && $58 == "1" ) ? "n" : "y" ; ついでですが、気をつけないといけないことをひとつ。 それは条件を並べる順番です。 &&の仕様として「最初の条件が偽なら以降の条件は判定しない」というのがあり、今回の条件はこれを利用しています。 なので逆に if ( $58 == "1" && isset( $58 ) ) とすると、$58が定義されていない場合にエラーが発生します。 ついでに最初の例文を添削すると、$58が定義されていない場合に$aが未初期化状態のまま出力されるし、定義されているときは$aを出力しません。 かならず$aを出力したいのなら条件判定の外に出力処理を置きましょう。 あと、$58 という変数ではエラーが出るはずですが、上記の説明ではとりあえず無視してます。 一度変数の名前の付け方についてマニュアルを読んでみてください。 #2さんのいうとおり、ツッコミどころが多くてどこから指摘してよいものやらですが、初心者とはそんなものですから気を落とさずに精進してください(笑)

Intel_404
質問者

お礼

ご丁寧な回答ありがとうございました。 以上の方法があるとは知りませんでした。もう一度ソースおよびPHPマニュアル等を見直し解決していきたいと思います。 今回はサポートしていただきありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

$58が無謀だからなのか,例がわるいのか・・・ 型判定と中身の確認をやっていいって何かに書いて ありました? ともかく質問するときはどのようなエラーがでているか をお書きになると回答者もわかりやすいかと。 今のままだと突っ込むところが複数合って、いまいち 指摘しづらいです。

Intel_404
質問者

お礼

回答ありがとうございました。 分かりにくい質問内容で大変すいませんでした。もう一度ソースをみて原因が何か探してみたいと思います。

  • 0x131cc6e
  • ベストアンサー率36% (42/115)
回答No.1

一度に行う、の意味がよくわからないのですが… どういうことがやりたいのでしょうか? 例に挙げているプログラムを言葉で表現すると 「ある変数が定義されており、その値が"1"なら変数aに"n"をセットするが、それ以外の値なら変数aには"y"をセットする。 変数が定義されていない場合は変数aの内容を出力する。」 ということになりますが、これと「一度に行う」の関連は? ひょっとして「判定してセットして出力したい」という事?

Intel_404
質問者

お礼

回答ありがとうございます。 すいませんでした。例は一部なのですが基本的には判定してセットして出力したいと思っています。 例では$58に値が入っている場合、もし$58が1だったらnを出力、そうではない場合はnを出力といった感じです。 よろしくお願いいたします。

関連するQ&A

  • 初歩的な質問だと思います。IFの条件文

    よろしくお願いします。 PHPリファレンスに,以下のように書いてありました。 <?php if ($handle = opendir('.')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo "$file\n"; } } closedir($handle); } ?> 2行目のifの条件文なのですが,=は代入することを表すから, ()の部分は条件文にならないと思ったのですが,どう解釈すれば良いのでしょうか。

    • ベストアンサー
    • PHP
  • URL変数が定義されているかどうか調べる

    PHPで、http://127.0.0.1/test.php?hensuu=Y というページをオープンした場合、 echo $hensuu; if (defined("hensuu")) { echo "Y"; } else { echo "N"; } 最初のecho文ではちゃんと"Y"を出力されるにもかかわらず、次のif文では"N"と出力されます。 URL変数が入力されたかどうかを確認するのにdefinedは使えないのでしょうか?

    • ベストアンサー
    • PHP
  • PHP「FALSE」や「0」を使った条件文

    「if条件文」の()に「FALSE」や値「0」がはいると なにも考える事無く無条件に 「else」以降の条件が実行になるという決まりなのでしょうか? もしそうであれば条件分にする意味があるのでしょうか? 基本的な質問で申し訳ないのですが 実際に使われる分かりやすい簡単な例があれば ご紹介ください。 よろしくお願いいたします。 例1: if(FALSE){ echo "FALSEではない"; }else{ echo "FALSEです。"; } 例2: if(0){ echo "ゼロではない"; }else{ echo "ゼロです。"; } 例3:(特にこの例は何かおかしいような気がします) if(10-10){ echo "イフが実行"; }else{ echo "エルスが実行"; }

    • ベストアンサー
    • 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
  • 条件演算子

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

    • ベストアンサー
    • PHP
  • ISSETで変数に値が入っていないか確認するのですが

    ISSETで変数に値が入っていないか確認するのですが <? $a = ''; if (isset($a)) { echo "何か入っています。"; } else { echo "空っぽです。"; } ?> 上のコードで「何か入っています。」がエコーされてしまいます。issetは値が入っていなければFALSEを返すと思ったのですが違うようなのでちょっと混乱してしまったのですが、これがマニュアルに書いてある「NULL に設定されている変数を調べた場合、 isset() はFALSE を返します。 」、ということなのでしょうか?

    • ベストアンサー
    • 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
  • HTTP認証ダイアログについて

    下記のPHPスクリプトを実行して、アカウント(ID:admin,パス:pass)を入力してもHTTP認証ダイアログが消えません。ダイアログが消えて、Hello! と表示させたいのですが、どこが間違っているのか、教えていただきたいです。 <?php $user="admin"; $pass="pass"; if (!isset($_SERVER['PHP_AUTH_USER'])) { //初回認証時(PHP_AUTH_USER:HTTP 認証しているときにそのユーザー名がセットされます。ダイアログに入力した値) header("WWW-Authenticate: Basic realm=\"PHP Web Storage\""); header("HTTP/1.0 401 Unauthorized"); echo "Please input account info!\n"; exit; }else { $flg=false; while(isset($user)){ if($_SERVER['PHP_AUTH_USER']==$user && $_SERVER['PHP_AUTH_PW']==$pass){ $flg=true; break; } } if(!$flg){echo"Please input valid account!\n";exit;} //停止 else{echo'Hello!';exit;} } ?>

    • ベストアンサー
    • PHP
  • sessionの使い方

    詳しい方がいましたら、ご教授下さいませ。 ---a.php--- <?php if(!isset($_SESSION['n']) {  session_start();  $_SESSION['n']='1'; } ?> ---------- ---b.php--- <?php session_start(); $_SESSION['n']='2'; ?> ---------- ---c.php--- <?php session_start(); echo($_SESSION['n']); ?> ---------- a.phpで、'1'をセットして保持し、 b.phpが動作したとき、'2'に入れ替えているのですが、 c.phpで確認すると、何故か'1'のままです。 一度セットした値を、入れ替えることって出来ないのでしょうか?

    • ベストアンサー
    • PHP
  • sessionの値が処理できない。

    次のようなセッション管理のコードですが、値($mydata)が保存されません。 ですので取得もできません。 /tmp 内には sess_ca0c8xxxxxx という風な ファイルが作成され アンダスコア以降はecho "セッションIDは{$id}です\n"; で表示される $idに一致しています。ファイルの中身は、mydata|N; という感じです。 下のPHPの動作結果はいつも"ありません。"となりますが、これは どこがおかしいのでしょうか? phpの設定なのかapacheの設定なのか・・・ OSはFedora Core2 Apacheは2.0 です。 よろしくお願いします。 '-------SESSION PUT------------------------------------------- <?php session_start(); session_register("mydata"); $mydata = 120; ?> <a href="sessionget.php">sessionget.phpにジャンプ</a> '-------SESSION GET------------------------------------------- <?php session_start(); echo "セッション内のデータは"; if ( isset($mydata) ){ echo "{$mydata}です。<br>\n"; } else { echo "ありません<br>\n"; } $id = session_id(); echo "セッションIDは{$id}です\n"; ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう