二次元連想配列のソート
何度やっても忘れるのでメモ。
// 項目の値でソート // 使い方:$data = value_asort($data,'itemname','desc'); function value_asort($ary,$itemname,$sortorder='asc') { $code = 'if ($a["'.$itemname.'"] == $b["'.$itemname.'"]) return 0;'; if ( $sortorder == 'asc' ) { // 並び順セット $code .= 'return ($a["'.$itemname.'"] < $b["'.$itemname.'"]) ? -1 : 1;'; } else { $code .= 'return ($a["'.$itemname.'"] < $b["'.$itemname.'"]) ? 1 : -1;'; } $newfunc = create_function('$a,$b', $code); usort($ary, $newfunc); return $ary; }
// キーでソート // 使い方:$data = array_map('inner_ksort', $data); function inner_ksort($ary) { ksort($ary); return $ary; }
…文字列はシングルクオート(')とダブルクオート(")のどちらで括るほうがいいのだろう…
#動作の違い等はもちろん知ってますが、
#処理コストが掛からないとか見た目が賢そうとか流行っているとかそういう意味で