PHP 按键值对数组进行数字排序

发布于 2024-09-24 06:09:10 字数 595 浏览 0 评论 0原文

我试图根据第一个键中的值按数字顺序对多个数组进行排序:

$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] . '<br>';

}

以“1,3,4,2”序列输出数组,我需要将它们输出为:“1,2, 3、4'。不确定如何或是否在此处使用 ksort/asort/array_multisort 函数。

I'm trying to sort several arrays in numerical order based on the value in their first key:

$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] . '<br>';

}

That outputs the arrays in a '1, 3, 4, 2' sequence, I need them to be output thusly: '1, 2, 3, 4'. Not sure how or even if to use the ksort/asort/array_multisort functions here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

红衣飘飘貌似仙 2024-10-01 06:09:10

您将需要一个自定义比较函数,然后可以将其与 usortuasort

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

从 PHP 5.3 开始,您还可以使用 匿名函数 用于比较函数:

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

您还可以使用 array_multisort,创建一个首先要排序的键数组,并使用它对数组项本身进行排序:

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

这样做可以防止为每对值调用比较函数进行比较时只比较关键值。

You will need a custom comparison function that you then can use with usort or uasort:

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

As of PHP 5.3 you could also use an anonymous function for the comparison function:

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

You could also use array_multisort, create an array of the keys that are to be sorted first and use it to sort the array items itself:

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

Doing this prevents calling the comparing function for each pair of values that is compared as only the key values are compared.

ぃ双果 2024-10-01 06:09:10

使用 usort 您可以在数组上指定自己的排序标准。这是一个关于如何实现你所要求的想法

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

usort($arrays, "cmp");

Using usort you can specify your own sorting criteria on an array. This is an idea of how you could achieve what you ask for

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

usort($arrays, "cmp");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文