Memo

メモ > 技術 > プログラミング言語: PHP > 配列

配列
■取得 2次元配列から、特定のカラムのみ取得。
<?php $array = array( array( 'id' => 10, 'name' => 'hoge', ), array( 'id' => 3, 'name' => 'fuga', ), array( 'id' => 20, 'name' => 'foo', ), array( 'id' => 1, 'name' => 'bar', ), ); print('<pre>'); print_r(array_column($array, 'id')); print('</pre>');
PHPでarray_columnを使う方法を現役エンジニアが解説【初心者向け】 | TechAcademyマガジン https://techacademy.jp/magazine/29662 ■ソート 2次元配列をソート。 サンプル http://refirio.org/memos/php/multisort/
<?php $array = array( array( 'id' => 10, 'name' => 'hoge', ), array( 'id' => 3, 'name' => 'fuga', ), array( 'id' => 20, 'name' => 'foo', ), array( 'id' => 1, 'name' => 'bar', ), ); //array_multisort(array_column($array, 'id'), $array); //array_multisort(array_map(function ($i) { return $i['id']; }, $array), $array); usort($array, function ($a, $b) { return $a['id'] - $b['id']; }); print('<pre>'); print_r($array); print('</pre>');
2次元配列の2次元目の配列の値でソートをする - Qiita https://qiita.com/tadasuke/items/e7be0d214e02105ab6d8 PHP で二次元配列を特定の値でソートする - Qiita https://qiita.com/shimon_haga/items/c7fcfe58521e79dfc361 以下のように「-」ではなく「<=>」を使って書くこともできる。 この「<=>」 は「三方比較演算子(宇宙船演算子)」というもので、まさに「昇順ソート」を意図していることが明確に伝わるメリットがある。
//usort($array, function ($a, $b) { return $a['id'] - $b['id']; }); usort($array, function ($a, $b) { return $a['id'] <=> $b['id']; });
また一例だが以下のようにすれば、 「id の昇順にソートする。id が同じものはさらに name の昇順にソートする」 と複数条件でソートできる。
usort($array, function ($a, $b) { // まず id を数値で比較 $cmp = $a['id'] <=> $b['id']; if ($cmp !== 0) { return $cmp; // id が違えばその結果を返す } // id が同じなら name を文字列で比較 return strcmp($a['name'], $b['name']); });

Advertisement