if文の書き方と処理速度について

このQ&Aのポイント
  • if文の書き方と処理速度について詳しく説明します。
  • if文を別々に処理する方法と一緒に処理する方法について説明します。
  • 処理速度についての一般的な考え方や注意点も解説します。
回答を見る
  • ベストアンサー

if文の書き方

プログラム初心者です if文の処理速度が速いのは一般的に考えてどちらでしょうか? 別々にif文で処理する方法 try { if(!isset($_REQUEST['id'])&& !is_string($_REQUEST['id'])){ throw new Exception('error'); } if(!isset($_COOKIE['date'])&& !is_string($_COOKIE['date'])){ throw new Exception('error'); } } catch (Exception $e) { $msg = $e->getMessage(); } 一緒に処理する方法 try { if(!isset($_REQUEST['id']) && !is_string($_REQUEST['id']) && !isset($_COOKIE['date']) && !is_string($_COOKIE['date'])){ throw new Exception('error'); } } catch (Exception $e) { $msg = $e->getMessage(); } よろしくお願いします

  • flash0
  • お礼率97% (297/306)
  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>if(!isset($_REQUEST['id'])&& !is_string($_REQUEST['id'])){ これって、(isset($_REQUEST['id']) && is_string($_REQUEST['id'])) の否定でしょうか?もしそうなら(!isset($_REQUEST['id']) || !is_string($_REQUEST['id'])) と書かないといけませんが・・・ なので合わせて書くなら if(!isset($_REQUEST['id']) || !is_string($_REQUEST['id']) || !isset($_COOKIE['date']) || !is_string($_COOKIE['date'])) { ではないんですかね。 なお、実行速度は大差ないです。基本的には(該当しないのがデフォなので)全部チェックするのですから)。 個人的には、見易さ・パッと見たときの意味の掴みやすさから if (!isset($_REQUEST['id']) || !is_string($_REQUEST['id'])) { throw new Exception('error'); } if (!isset($_COOKIE['date']) || !is_string($_COOKIE['date'])) { throw new Exception('error'); } が好みです。

flash0
質問者

お礼

回答ありがとうございます すいません||でした 見易さ優先で行こうと思います

その他の回答 (1)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

追記です。 基本的に「処理速度」よりも、ソースの読みやすさ(内容を把握しやすい記述)を心がけてください。明らかに無駄な処理とかボトルネックになる処理でもない限り、処理速度は誤差の範囲でしかありません。逆に読みにくくてバグを生みやすいソースは決定的にアウトです。

flash0
質問者

お礼

見易さのほうが大事でした

関連するQ&A

  • try~catchについて

    プログラム初心者です 繰り返し処理の中でtry~catchにスローしてもいいでしょうか?(正常にfor文は終了しますか?) try { for($a = 0; $a < 5; $a++) { if($a==3){ throw new Exception('3'); } } catch (Exception $e) { $msg = $e->getMessage(); } よろしくお願いします

    • ベストアンサー
    • PHP
  • if文の$_COOKIEの処理について

    if文の「$_COOKIE」の処理について質問させてください。 3つのif文の処理は同じだと思いそれぞれ使いって みると多少違いがあるようなのですが、その違い がよく分かりません。PHP4の場合はとはちょっと 様子が違うみたいです。 (1) if($_COOKIE['XXXXXXX']) (2) if(isset($_COOKIE['XXXXXXX'])) (3) if($_COOKIE['XXXXXXX']!="") 環境:PHP5 よろしくお願いします。

    • ベストアンサー
    • PHP
  • if文について

    $a = $_GET['b']; if ($_COOKIE['hogeFlag'] != hoge) && (!isset($a)) {  処理1 } あるページから画面遷移したときに遷移前に食わせたcookieの値とgetで送られてくる値を元にある処理を行いたいのですが、どうもうまく処理1に入ってくれません。 個々にすればちゃんと処理されるのですが、それだと非効率だと思うので、一行で書きたいのですがどうもうまくいきません。 前提 遷移前ページでcookieに値を食わせてかつ別の値をgetで送ってくるようになっているが、cookieの値が食わせた値と違う場合かつgetで送ってこなかった場合に処理1を実行したい。

    • 締切済み
    • PHP
  • if文のなかで

    プログラム初心者です if文のなかでmove_uploaded_file()を使うとどうゆう処理をするんでしょうか? if (!move_uploaded_file($tmp_name, "{$image_dir}/{$name}")) { throw new Exception('noimg');//画像の保存に失敗しました } 否定がついていても最初の一行でアップロードしてくれるのですか? 否定がついていてもif文の中の関数は実行されるのでしょうか? よろしくお願いします

    • ベストアンサー
    • PHP
  • try~catch

    php初心者です try~catchをわかりやすく教えてください throw new Exceptionが出現したら、catchまでの処理をしないでとばすとゆうことですか? try~catchを抜けたら、他の処理は普通に実行されるのでしょうか? try~catchのカッコ{で囲む範囲は大きくしたほうがいいでしょうか?(大きく囲むと処理スピードおそくなりますか?) try { throw new Exception('エラーが発生しました');  print "hoge"; } catch (Exception $e) {  echo '例外発生', $e->getMessage(), "\n"; }  print "foo"; よろしくお願いします

    • ベストアンサー
    • PHP
  • 例外を明示的にthrowするとき

    例外をthrowしたいとき、以下の場合、IllegalArgumentException、FileNotFoundException、どちらを使用していいのかわかりません。 public static void main(String[] args){ try{ AAA(new File(args[0])); }catch(FileNotFoundException e){ System.out.println(e.getMessage); } e)catch(IllegalArgumentException e){ System.out.println(e.getMessgae()); } } public static void AAA(File file){ if(isFile()){ //処理 }else{ throw new IllegalArgumentException("引数が不正です");    //それともthrow new FileNotFoundException("ファイルが存在しません"); } }

  • JSPのIF文を教えて下さい

    こんばんわ。 JSPにてIF文を使ったDBテーブル表示のWEBを作成したのですが クローズの行でエラーが表示されてしまいます。 エラー内容は「型の開始が不正」ですというものです。 知識不足で恐縮ですがご教示願います。 <%@page contentType="text/html; charset=Windows-31J"%> <%@page import="java.sql.*"%> <%! // サーブレットのinitメソッドに相当 public void jspInit() { try { // JDBCドライバをロード Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (Exception e) { e.printStackTrace(); } } %> <HTML> <HEAD> <TITLE>一覧</TITLE></HEAD> <CENTER> <B>一覧</B> <TABLE border="3" BORDERCOLOR="#9999ff"> <TR> <TD>年齢</TD> <TD>電話番号</TD> </TR> String year = request.getParameter("年齢"); String namber = request.getParameter("電話番号"); <% // データベースへのアクセス開始 Connection con = null; Statement stmt = null; ResultSet rs = null; try { // データベースに接続するConnectionオブジェクトの取得 con = DriverManager.getConnection("jdbc:sqlserver://sqlserverName;DatabaseName=NAME","ID","PW"); // データベース操作を行うためのStatementオブジェクトの取得 stmt = con.createStatement(); if(year.length() >= 0){ %> // SQL()を実行して、結果を得る rs = stmt.executeQuery("SELECT * FROM テーブルA where 年齢='"+ paramA +"'"); rs = stmt.executeQuery("SELECT * FROM テーブルB where 年齢='"+ paramA +"'"); <% } else if(namber.length() >= 0){ %> rs = stmt.executeQuery("SELECT * FROM テーブルA where 電話番号='"+ paramC +"'"); rs = stmt.executeQuery("SELECT * FROM テーブルB where 電話番号='"+ paramC +"'"); <% } %> // 得られた結果をレコードごとに表示 while (rs.next()){ String aa = rs.getString("名前"); String bb = rs.getString("住所"); %> <TR bgcolor="#ccffcc"> <FORM method="post" action="Next.jsp"> <input type="hidden" name="num" value="<%= rs.getString("ID")%>"> <%-- 年齢フィールドの表示 --%> <TD><%= aa %></TD> <%-- 電話番号フィールドの表示 --%> <TD><%= bb %></TD> <TD align="center"> </form> </TD> </TR> <% } } catch (Exception e) { e.printStackTrace(); // エラー表示プログラム out.write(e.getMessage()); } finally { // データベースとの接続をクローズ try { rs.close(); } catch (Exception e) {} try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} } %> </TABLE> </BODY> </HTML>

    • ベストアンサー
    • Java
  • phpのif文について

    phpでログイン処理のif文を書いています。 nameとpasswordのフィールドが記入されているのかをチェックするif文を書いたのですが、機能してくれません。何かが間違っているのでしょうか。 何も入力しないor間違った情報を入力する ということをしてもログインが出来てしまいます。 どなたかテェックお願い致します。 <?php require('dbconnect.php'); session_start(); if ($_COOKIE['name'] != '') { $_POST['name'] = $_COOKIE['name']; $_POST['password'] = $_COOKIE['password']; $_POST['save'] = 'on'; } if (!empty($_POST)) { // ログインの処理 if ($_POST['name'] != '' && $_POST['password'] != '') { $sql = sprintf('SELECT * FROM members WHERE name="%s" AND password="%s"', mysql_real_escape_string($_POST['name']), sha1(mysql_real_escape_string($_POST['password'])) ); $record = mysql_query($sql) or die(mysql_error()); if ($table = mysql_fetch_assoc($record)) { // ログイン成功 $_SESSION['id'] = $table['id']; $_SESSION['time'] = time(); // ログイン情報を記録する if ($_POST['save'] == 'on') { setcookie('name', $_POST['name'], time()+60*60*24*14); setcookie('password', $_POST['password'], time()+60*60*24*14); } header('Location: index.php'); exit(); } else { $error['login'] = 'failed'; } } else { $error['login'] = 'blank'; } } ?>

    • ベストアンサー
    • PHP
  • チェックする方法

    プログラム初心者です $nameと$mailをDBに登録してあるか調べたいのですが sqlを一回だけ発行で調べる方法はありますか? //名前とメールを取得して重複チェック $name2 = mysqli_query($link,sprintf('SELECT name FROM table WHERE name="%s"', mysqli_real_escape_string($link,$name) )); $data = mysqli_fetch_assoc($name2); if(isset($data['name'])==$name){ throw new Exception('noname'); } $name3 = mysqli_query($link,sprintf('SELECT mail FROM table WHERE mail="%s"', mysqli_real_escape_string($link,$mail) )); $data2 = mysqli_fetch_assoc($name3); if(isset($data2['mail'])==$mail){ throw new Exception('nomail'); } よろしくお願いします

    • ベストアンサー
    • PHP
  • PHPの例外処理

    PHPの例外処理について教えてください function test() {   try{    $a = 10;    $b = 0;    $result = $a/$b;   }   catch(Exception $e){    //エラー処理   } } 上記でcatchが実行されるためにはどのようにすれば良いでしょうか?例えば if($b == 0) {   throw new Exception('例外'); } を「$result = $a/$b;」の前に書いておくなどすればcatchされるのはわかりますが、 想定されるすべての例外のthrow処理を記載するなんてことはしたくありません。 実行してエラーだったら自動的にthrowされる、なんていうことはPHPでは無理でしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう