Archives by date

You are browsing the site archives by date.

【PHP】isset()とempty()の挙動まとめ。

自分用。

以下の変数を用いて実験。
※$hは未定義とする

$a = null;
$b = 0;
$c = '0';
$d = array();
$e = '';
$f = true;
$g = false;
// $h

まずはisset()。

var_dump(isset($a));
var_dump(isset($b));
var_dump(isset($c));
var_dump(isset($d));
var_dump(isset($e));
var_dump(isset($f));
var_dump(isset($g));
var_dump(isset($h));
↓
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)

isset()は「null」、「未定義」の場合のみ「false」。

次にempty()。

var_dump(empty($a));
var_dump(empty($b));
var_dump(empty($c));
var_dump(empty($d));
var_dump(empty($e));
var_dump(empty($f));
var_dump(empty($g));
var_dump(empty($h));		
↓
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)
bool(true)

empty()は「true」の場合のみ「false」を返却という結果に。

ということで結果を表にまとめてみた。

isset() empty()
null bool(false) bool(true)
0 bool(true) bool(true)
‘0’ bool(true) bool(true)
array() bool(true) bool(true)
bool(true) bool(true)
true bool(true) bool(false)
false bool(true) bool(true)
未定義 bool(false) bool(true)

変数未定義のempty()もエラー吐かずにtrue返してくれるのね。ためになっt(ry

 

【jQuery】data属性に特定の値を持つ要素を指定する方法。

めも。

単に要素内に特定の値を持つノードを選択したいのであれば、下記のように「:contains()」を用いれば拾える。

■HTML

<div data-hoge="fuga">piyo</div>

■jQuery

$(function(){
	var elem = $('div:contains("piyo")');
	console.log(elem.data('hoge'));
})
[console]
fuga

これをどうにかごにょごにょして、data属性に特定の値を持つノードを選択できないかと色々調べてみたけれど、結局以下のようにするしかなさそう(?)な感じがした。

■HTML

<div data-hoge="fuga">piyo</div>

■jQuery

$(function(){
	var elem = $('[data-hoge="fuga"]');
	console.log(elem.text());
})
[console]
piyo

とりあえず動作は問題ないけど、もっとスマートな記述方法はないだろうか。属性セレクタはパフォーマンスがクッソ重いからなるべくなら使いたくないところ。
見つけたらもっかいまとめよう。