江户川乱折腾
我无法通过该字段进行排序或它的方向。事实上,你可以。有一个例子:<?php // Example data $data = array( array('name' => 'Gamma', 'val' => 25), array('name' => 'Beta', 'val' => 5), array('name' => 'Alpha', 'val' => 10) ); function sortme(&$array, $onfield, $isdesc) { usort($array, function($a, $b) use ($onfield, $isdesc) { // 'use' keyword allows to reference external variables from the inside // custom method to obtain and comapre data; $v1 = isset($a[$onfield]) ? $a[$onfield] : NULL; $v2 = isset($b[$onfield]) ? $b[$onfield] : NULL; if ($v1 < $v2) return ($isdesc ? 1 : -1); elseif ($v1 > $v2) return ($isdesc ? -1 : 1); else return 0; // Note: the conditions above can be replaced by spaceship operator in PHP 7+: // return $isdesc ? ($v2 <=> $v1) : ($v1 <=> $v2) ; } ); } sortme($data, 'name', false); // sort by `name` ascending print_r($data); // Alpha -> Beta -> Gamma sortme($data, 'val', true); // sort by `val` descending print_r($data); // 25 -> 10 -> 5
回首忆惘然
它提供了一个将额外参数传递给 usrot 函数的示例。function sort_by_term_meta( $terms, $meta ) { usort($terms, array(new TermMetaCmpClosure($meta), "call"));}function term_meta_cmp( $a, $b, $meta ){ $name_a = get_term_meta($a->term_id, $meta, true); $name_b = get_term_meta($b->term_id, $meta, true); return strcmp($name_a, $name_b); } class TermMetaCmpClosure{ private $meta; function __construct( $meta ) { $this->meta = $meta; } function call( $a, $b ) { return term_meta_cmp($a, $b, $this->meta); }}基本上您需要创建一个类函数来进行排序,并且您可以在构造类时传递其他参数(列,方向)。