Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:uasort不工作_Php_Arrays_Sorting - Fatal编程技术网

PHP:uasort不工作

PHP:uasort不工作,php,arrays,sorting,Php,Arrays,Sorting,我有以下数组 $infoArray = Array ( [Shockwafe Ultra 9.2] => Array ( [0] => 8 [1] => 45 Hz - 18.000 Hz [2] => 9.2 [3] => 1 [4] => 1 [5] => 1 [6] => [

我有以下数组

$infoArray = Array ( [Shockwafe Ultra 9.2] => Array ( [0] => 8 [1] => 45 Hz - 18.000 Hz [2] => 9.2 [3] => 1 [4] => 1 [5] => 1 [6] => [7] => [8] => B+ [9] => B+ [10] => A [11] => B ) [Bose 5.1 SoundTouch 300] => Array ( [0] => 9 [1] => 45 Hz - 20.000 Hz [2] => 5.1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => 1 [8] => A [9] => A [10] => A+ [11] => A+ ) [Sonos 5.1 System] => Array ( [0] => 10 [1] => 31.5 Hz - 20.000 Hz [2] => 5.1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => 1 [8] => A+ [9] => A+ [10] => A+ [11] => A+ ) ) 我在wamp上试过,它成功地安排了我想要的顺序。但是,在我的Wordpress在线安装中,这不起作用。它只是不重新排列数组。应该注意的是,我在functions.php中使用一个短代码。我尝试将sortByOrder()函数移到shortcode区域之外,但没有成功

有什么问题吗?

函数排序器($a,$b){
function sortByOrder($a, $b) {
        $result = 0;
        if ($b['rating'] > $a['rating']) {
            $result = 1;
        } elseif ($b['rating'] < $a['rating']) {
            $result = -1;
        }
        return $result; 
   }
$result=0; 如果($b['rating']>$a['rating']){ $result=1; }elseif($b[“评级”]<$a[“评级”]){ $result=-1; } 返回$result; }

这就是我的解决方案。它与十进制数有关,我不太清楚它为什么起作用。如果您使用整数,OP中的解决方案是可以的,但十进制数需要这样做。

遇到了同样的问题。结果表明,比较回调应该返回一个整数值。如果返回浮点,则值将被转换为int。这意味着
-1
1
之间的值都将变为
0
。这就是整数起作用的原因:如果它们不一样,它们之间的差异总是至少
1

介绍了PHP7.4和“”。这些使得比较器函数非常简洁。因此,“按
评级
”订购将是:

uasort($infoArray,fn($a,$b)=>a['rating']$b['rating']);
尝试在比较函数中添加一个
die()
语句,看看它是否首先被调用。然后在数组上执行两个print_r语句,一个在前面,一个在后面,这样我们就可以看到发生了什么。另外,检查日志中是否有任何错误。
function sortByOrder($a, $b) {
        $result = 0;
        if ($b['rating'] > $a['rating']) {
            $result = 1;
        } elseif ($b['rating'] < $a['rating']) {
            $result = -1;
        }
        return $result; 
   }