キー値によって配列を数値で並べ替えるPHP

arrays key php
キー値によって配列を数値で並べ替えるPHP

最初のキーの値に基づいて、いくつかの配列を数値順に並べ替えようとしています。

$array1[0] = '1';
$array1[1] = 'content';
$array1[2] = 'more content';

$array3[0] = '3';
$array3[1] = 'content';
$array3[2] = 'more content';

$array4[0] = '4';
$array4[1] = 'content';
$array4[2] = 'more content';

$array2[0] = '2';
$array2[1] = 'content';
$array2[2] = 'more content';

$arrays = array($array1, $array3, $array4, $array2);

foreach ($arrays as $array) {

echo $array[0] . ' ' . $array[1] . ' ' . $array[2] . '
';

}

これは、配列を「1、3、4、2」のシーケンスで出力します。したがって、「1、2、3、4」のように出力する必要があります。 ここでksort / asort / array_multisort関数をどのように使用するか、または使用するかどうかさえわかりません。

  1  0


ベストアンサー

http://php.net/usort [usort]またはhttp://php.net/uasort [` uasort`]で使用できるカスタム比較関数が必要になります。

function cmp($a, $b) {
    return intval($a[0]) - intval($b[0]);
}
usort($arrays, 'cmp');

PHP 5.3以降では、比較関数にhttp://php.net/functions.anonymous[anonymous function]を使用することもできます。

usort($arrays, function($a, $b) { return intval($a[0]) - intval($b[0]); });

また、http://php.net/array_multisort [array_multisort]を使用して、最初にソートするキーの配列を作成し、それを使用して配列項目自体をソートすることもできます。

$keys = array();
foreach ($arrays as $array) $keys[] = intval($array[0]);
array_multisort($keys, $arrays);

これにより、キー値のみが比較されるため、比較される値の各ペアに対して比較関数が呼び出されなくなります。

2


usortを使用すると、配列に独自のソート基準を指定できます。 これは、あなたが求めるものをどのように達成できるかというアイデアです

function cmp($a, $b)
{
  if ($a == $b) {
      return 0;
  }
  return (intval($a[0]) < intval($b[0])) ? -1 : 1;
}

usort($arrays, "cmp");

1


タイトルとURLをコピーしました