特定のキーで配列を並べ替えます
質問
次の配列を持っています:
Array
(
[Places] => Array
(
[public] => 0
[entities] => Array
(
...
)
)
[Issues] => Array
(
[public] => 1
[entities] => Array
(
...
)
)
[Source] => Array
(
[public] => 0
[entities] => Array
(
...
)
)
)
.
公開鍵で配列で並べ替えることができます。ksort
またはusort
を使用する必要があるかもしれませんが、これを実装する方法がわからないことを知っています。
どんなアイデアもありがとうございます!
解決
usort($array, function ($a, $b) { return $a["public"] - $b["public"]; });
. 他のヒント
これは面白いリンクです: http://www.the-art-of-web.com/php/sortarray/
私は
を試してみましたusort(usort(array, function), function);
.
要求に応じてサンプルコードを試すことができますが、情報は撮影のためにすでにあります。
Array_Multisortを使用して、これを見てください。
$test = array(
'Places' => array(
'public' => 0,
'entities' => array(
)
),
'Issues' => array(
'public' => 1,
'entities' => array()
),
'Source' => array(
'public' => 0,
'entities' => array()
)
);
echo '<pre>';
print_r($test);
echo '</pre>';
array_multisort($test,SORT_ASC,$test);
echo '<pre>';
print_r($test);
echo '</pre>';
. array_multisort
を使用してこれを行う一般的な方法は、ソート値を独自の配列に配置してから、プライマリソート配列として両方のアレイをソートすることです。
次のことを試してください:
$test = array(
'Places' => array(
'public' => 0,
'entities' => array(
)
),
'Issues' => array(
'public' => 1,
'entities' => array()
),
'Source' => array(
'public' => 0,
'entities' => array()
)
);
echo '<pre>';
print_r($test);
echo '</pre>';
$sort = array();
foreach ($test as $k => $a) {
$sort[$k] = $a['public'];
}
// placing $sort first in array_multisort causes $test to be sorted in same order as the values in $sort
array_multisort($sort,SORT_ASC,$test);
echo '<pre>';
print_r($test);
echo '</pre>';
. コールバック関数でUSORTを使用できます。
function cmp($a, $b) {
return $a['public'] == $b['public'] ? 0 : $a['public'] > $b['public'] ? 1 : -1;
}
usort($array, "cmp");
. これを試してみてください:
$code = "return (-1*strnatcmp(\$a['public'], \$b['public']));";
uasort($array, create_function('$a,$b', $code));
. 所属していません StackOverflow