MW211 EXIT

devlog
PHP/配列から任意の値を除去する
2011年11月01日
┌──────────────────────────────────────┐
│$z = array('a'=>'A', 'b'=>'B', 'c'=>'C');                                   │
└──────────────────────────────────────┘
上記のような連想配列から、「'b'=>'B'」の組を除去してしまいたい場合には
以下のような感じでピンポイントでunsetしてしまえばよい。
┌──────────────────────────────────────┐
│unset($z['b']);                                                             │
└──────────────────────────────────────┘

では、以下のように連想配列でない場合はどうするのか?
┌──────────────────────────────────────┐
│$z = array('A', 'B', 'C');                                                  │
└──────────────────────────────────────┘

「array_diff()」を使う。
┌──────────────────────────────────────┐
│$z = array_diff($z, array('B'));                                            │
└──────────────────────────────────────┘

あれ、前に出てきたような気が…。
分類:PHP配列
PHP/配列でSQL抽出
2011年10月24日
配列$idに抽出したいIDを格納しておいて、
これを元にSELECT文を発行したい場合には、以下のような感じに
「implode()」で「,」区切り一直線に連結して「WHERE IN()」の中にぶち込むとよい。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM 表                                                                 │
│    WHERE "ID" IN ({implode(',', $id)});                                    │
└──────────────────────────────────────┘
#これはあくまでイメージで、実際には「.」とかで文字列結合してください

すると以下のようになるわけだ。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM 表                                                                 │
│    WHERE "ID" IN (1,2,3);                                                  │
└──────────────────────────────────────┘

しかし、配列$idに一件もIDがないと、以下のようになって当然エラー。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM 表                                                                 │
│    WHERE "ID" IN ();                                                       │
└──────────────────────────────────────┘

ということで、これを回避するには、「WHERE IN()」の部分に
ありえない値を入れるのが手っ取り早いのではないだろうか。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM 表                                                                 │
│    WHERE "ID" IN (0);                                                      │
└──────────────────────────────────────┘
※IDが「1」から始まり「0」がないことが前提

万全を期すならば「WHERE IN()」の部分を「WHERE FALSE」に
(条件分岐で)置換してあげるという手もある
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM 表                                                                 │
│    WHERE FALSE;                                                            │
└──────────────────────────────────────┘

間違っても、WHERE句毎削除してはいけない。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM 表;                                                                │
└──────────────────────────────────────┘
全件ひっかかってしまう(該当ありになってしまう)からだ。
分類:SQL、PHP配列
PHP/配列から重複を除外する方法
2011年08月20日
単純な一次元配列では以下の通り。
┌──────────────────────────────────────┐
│$配列 = array_unique($配列);                                                │
└──────────────────────────────────────┘

「''」を除去したい場合は以下の通り。
┌──────────────────────────────────────┐
│$配列 = array_merge(array_diff($配列, array('')));                          │
└──────────────────────────────────────┘
分類:PHP配列
前へ 1 2 3 次へ