【PHP】!empty()とisset()関数の違い

PHPのサンプルコードを読んでいると、!empty() とisset()関数が頻繁に出てきます。

!empty()は、emptyの否定であり、 “空ではない”という意味になります。

他方、isset()は、変数や配列が“セットされている”という意味です。

この二つは、似たような意味であることから混同して使われているようにも見受けられます。

そこで、一度、公式マニュアルで確認してみました。

empty() :

http://jp2.php.net/manual/ja/function.empty.php

isset() :

http://jp2.php.net/manual/ja/function.isset.php

違いを要約してみます。

emptyは、0や””の空文字がセットされていても、空と評価します。

他方、issetは、0や””がセットされていれば、空でないと評価します。

つまり、emptyとissetで違いが出てくるのは、0や空文字が変数に代入されている場合というわけです。

マニュアルのサンプルコードを少しいじって検証してみます。

<?php
$var = 0;

// $var が0(空)なので条件はfalseと評価されます
if (!empty($var)) {
echo 'emptyは0を空と評価しtrue、!の否定によりfalseになり非表示';
}
 

// $var が設定されているので条件はtrueと評価されます
if (isset($var)) {
echo 'issetは0がセットされていると評価しtrueなので表示';
}
?>

少しややこしいので、挙動に自信が無いときは、わかりやすいissetを使う方が無難といえそうです。

カテゴリー: PHP | コメントする

【PHP+MySQL】トランザクション構文の基礎

PHPとMySQLを連携させてデータベースを扱っていると、トランザクションの処理が必要になることがあります。

そこで、ここでは、トランザクション構文の基礎を紹介します。

<?php

(接続部分は省略)

//オートコミットをオフに設定
$sql = "SET AUTOCOMMIT=0" ;
mysql_query($sql) ;

//トランザクション開始
$sql = "BEGIN" ;
mysql_query($sql) ;

//テーブルに挿入
$sql = sprintf('INSERT INTO table SET data="%s"' , $data) ;
$res = mysql_query($sql) or die("insert error") ;
if ($res) {
//コミット
$sql = "COMMIT" ;
mysql_query($sql) ;
echo "成功" ;
} else {
//ロールバック
$sql = "ROLLBACK" ;
mysql_query($sql) ;
echo "失敗" ;
}
?>

基本的に、これでトランザクションが機能します。

注意点としては、データベースの種別に InnoDB などを選択しておくことです。

デフォルトの MyISAM ではトランザクションを利用することはできません。

autocommit というのがよくわからなかったので調べてみました。

InnoDBのデフォルトだとautocommit機能がオンで、commitする前でも、クエリ成功時点で自動的に確定してしまうらしい。

これだとrollbackできないケースが出てくるので、autocommit機能はオフにした方が良いとのこと。

ちなみに、CORESERVERのInnoDBを調べたら、オンになっていました。

(参考)autocommitについて役立つページ

http://redwarcueid.seesaa.net/article/140085587.html

http://open-groove.net/mysql/autocommit/

http://dbinfo.sakura.ne.jp/?contents_id=132

カテゴリー: PHP, SQL | コメントする

【書評】心くばりの文章術

心くばりの文章術 高橋麻奈(著)の書評です。

良い点

  • 内容の構成がしっかりしている
  • 節ごとに小まとめ、章ごとにまとめ有り
  • 読みやすく勉強になる

悪い点

  • 特に無し

総評

IT関連本の『やさしい』シリーズで有名な、高橋麻奈さんの著作です。

『やさしい』シリーズは、平易な文章で、内容がわかりやすいと評判の本。

そんな評価を得ている作者が、文章術について述べたのが、この『心くばりの文章術』です。

全体的に、『仕事上の文章術』に重点が置かれています。小説や随筆の書き方ではないので、その点は、注意が必要です。

内容的には、仕事上での『説明する文章』、『アピールする文章』などが紹介され、それを『実践』する方法などが解説されています。

『説明する文章』では、理由付けや具体例、対象の整理、並列と階層、定義などの手法について述べています。

また、『アピールする文章』では、問題点→主張→利点といった構成の仕方や、文章の計画→メモ書き出し→構成といった文章作成術などが紹介されています。

仕事上で、または、ブログやサイト作成で、文章を書く必要の多い人なら目を通しておくと後々ためになる一冊だと思います。

心くばりの文章術

カテゴリー: BOOK, Others | コメントする

PHP技術者認定試験について

PHP技術者認定初級試験が2011年3月11日からスタートするようです。

初級が春から、上級が秋からの開催みたいです。

初級試験概要

  • 受験料:12,000円(税抜き)
  • 問題数:40問
  • 試験時間:1時間
  • 合格ライン:7割正解
  • 主教材:はじめてのPHP5(オライリー)

上級試験概要

  • 受験料:15,000円(税抜き)
  • 問題数:60問
  • 試験時間:1時間30分
  • 合格ライン:7割正解
  • 主教材:プログラミングPHP第2版(オライリー)

PHP技術者認定試験の概要はこんな感じです。

はじめに目がいくのは受験料ですが、少し高い印象を受けます。この半分くらいなら早速、受けてみたいところですが。

注意したいのは、国家資格ではなく、民間資格という点です。IT関係の資格には、ベンダーが実施する試験など民間資格が多いのですが、このPHP認定試験もそういった種類の資格に分類できると思います。

実施団体は、

特定非営利活動任意団体PHP技術者認定機構

なる組織です。いわゆるNPO法人に分類されるのでしょうか。

(※ コメント欄でご指摘を受けたように、この組織は、特定非営利法人(NPO)とは異なる任意団体とのことです。訂正してお詫びいたします。)

当該ページの設立趣旨に次のような記述があります。

『日本国内の「PHP」技術習得度合いを測る有効な基準がないため、個々のPHP技術者の技量に大きな差が生じています。』

この文章は少し疑問に思います。なんらかの基準があれば、個々の技術者の技量の差が縮まるのでしょうか。いや、基準があっても差は歴然と存在すると思います。原因と結果の関連がおかしい文章にみえます。

それはさておき、昨秋に初級のベータ試験が行われていたようで、受験者の体験がブログに載っています。

弱小PHPerの憂鬱 合格発表 

初級は、40問中28問の正解で合格なのですね。ただ、重箱の隅的な細かい箇所も出題されるようで微妙な感じも伝わってきます。

過去問が公開されるのはいつぐらいになるのでしょうか。公開されたら是非、解いてみたいですね。内容が充実していて、実務にも役立つ知識が問われるなら勉強のしがいも出てきます。

資格商法と揶揄されない、しっかりとした運営を期待したいです。

カテゴリー: PHP | 2件のコメント

【書評】図解SQLこれからはじめる基本の知識

図解 SQL これからはじめる基本の知識 島田裕二(著)の書評です。

良い点

  • SQLの基礎を一通りカバー
  • 複数のデータベースについて言及
  • 読みやすく、短時間で読み終えられる
  • 青と黒の二色刷りで見やすい

悪い点

  • 正規化の解説は無い

総評

表紙の記述に、『基礎』、『1冊目』とあるように、入門者向けのSQL解説本です。

特徴は、『図解』されていること。見開き2ページで項目が完結していて、左に解説文、右に図表という構成になっています。

この構成が最後まで続くので読みやすく、『リファレンス』としても使えます。

ただ、初心者向けで易しいのは良いのですが、ある程度、SQLを勉強した人には、少し物足りないかもしれません。ここら辺は、基礎のSQLとのバランスで難しいところだとは思いますが。

正規化を具体例を出して解説したり、PHPなどと絡めて実践的なサンプルを出してくれると自分的にはポイントが高いのですが、基礎のSQLを学ぶという目的の1冊目としては良書だと思います。

図解 SQL これからはじめる基本の知識

カテゴリー: BOOK, SQL | コメントする