按特定键对多维数组进行排序
按特定键值对多维数组进行排序可以使用以下各种方法来实现PHP。让我们探索一个常见问题及其使用此技术的解决方案。
问题:
我们如何根据“order”键对数组进行排序?
数组结构:
$myArray = [ [ 'hashtag' => 'a7e87329b5eab8578f4f1098a152d6f4', 'title' => 'Flower', 'order' => 3 ], [ 'hashtag' => 'b24ce0cd392a5b0b8dedc66c25213594', 'title' => 'Free', 'order' => 2 ], [ 'hashtag' => 'e7d31fc0602fb2ede144d18cdffd816b', 'title' => 'Ready', 'order' => 1 ] ];
解:
1.将 usort 与自定义函数结合使用:
此方法涉及定义一个自定义排序函数,该函数比较“顺序”值并返回适当的比较结果。
function sortByOrder($a, $b) { if ($a['order'] > $b['order']) { return 1; } elseif ($a['order'] < $b['order']) { return -1; } return 0; } usort($myArray, 'sortByOrder');
2.使用匿名函数:
在 PHP 5.3 及更高版本中,可以使用匿名函数来简化自定义排序功能。
usort($myArray, function($a, $b) { if ($a['order'] > $b['order']) { return 1; } elseif ($a['order'] < $b['order']) { return -1; } return 0; });
3.使用 Spaceship 运算符(PHP 7 及更高版本):
PHP 7 引入了 spaceship 运算符 (< =>) 来进行简洁的比较操作。
usort($myArray, function($a, $b) { return $a['order'] <=> $b['order']; });
4。使用箭头函数(PHP 7.4 及更高版本):
箭头函数通过消除 function 关键字进一步简化代码。
usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);
多维排序:
对于具有嵌套结构的数组,您可以扩展排序功能以考虑多个键。这允许复杂的排序,例如按“子顺序”中的“顺序”排序。
usort($myArray, function($a, $b) { $retval = $a['order'] <=> $b['order']; if ($retval == 0) { $retval = $a['suborder'] <=> $b['suborder']; if ($retval == 0) { $retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder']; } } return $retval; });
注意:如果需要维护键关联,请考虑使用 uasort() 而不是usort().
以上是如何在 PHP 中按特定键对多维数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!