Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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:对数组输出进行排序,但将相同的值随机化_Php_Arrays - Fatal编程技术网

PHP:对数组输出进行排序,但将相同的值随机化

PHP:对数组输出进行排序,但将相同的值随机化,php,arrays,Php,Arrays,获得此信息的最佳/最简单方法是: 我所拥有的: array('100', '100', '100', '80', '70', '70', '50', '45'); 输出应该是什么样子的: 100 (random order) 100 (random order) 100 (random order) 80 70 (random order) 70 (random order) 50 45 你可以使用usort(http://www.php.net/manual/en/function.uso

获得此信息的最佳/最简单方法是:

我所拥有的:

array('100', '100', '100', '80', '70', '70', '50', '45');
输出应该是什么样子的:

100 (random order)
100 (random order)
100 (random order)
80
70 (random order)
70 (random order)
50
45
你可以使用usort(http://www.php.net/manual/en/function.usort.php)或根据您的要求进行分类。然后,如果值相等,您可以选择随机返回正数或负数。

您可以使用usort(http://www.php.net/manual/en/function.usort.php)或根据您的要求进行分类。然后,如果值相等,您可以选择随机返回一个正数或负数。

尝试以下方法:

基于以下地址的aasort:

试试这样的方法:

基于以下地址的aasort:

您必须使用usort或uasort(uasort保留数组的键)。使用PHP 5.3,您可以这样做:

shuffle($array); // randomize

uasort($array, function($a, $b){
    if($a === $b) {
        return rand(0, 1);
    }
    return $a < $b;
});
shuffle($array);//随机化
uasort($array,function($a,$b){
如果($a==$b){
返回rand(0,1);
}
返回$a<$b;
});

您可能需要先命名函数,如php文档所示,您必须使用usort或uasort(uasort保留数组的键)。使用PHP 5.3,您可以这样做:

shuffle($array); // randomize

uasort($array, function($a, $b){
    if($a === $b) {
        return rand(0, 1);
    }
    return $a < $b;
});
shuffle($array);//随机化
uasort($array,function($a,$b){
如果($a==$b){
返回rand(0,1);
}
返回$a<$b;
});

您可能需要先命名函数,就像php文档显示的那样,随机输出相同的值有什么意义?这些值还包括名称和图像等数据,如果这些人没有相同的值,他们应该根据其值和描述顺序进行随机分配如果他们的值相同,那么哪个
70
排在第一位重要吗?因为这是一个排名系统和他们有相同的值没有一个应该被支持随机输出相同的值有什么意义?这些值还包括像名字和图像这样的数据,这些人应该根据其值和描述顺序随机选择,如果他们没有相同的值如果他们是相同的值,那么哪一个
70
首先出现有关系吗排名系统和他们有相同的价值,没有一个应该被看好,这听起来不错。。。我试过了,但输出并不是我所期望的:现在没有随机的,排序是这样的:100100,45,70,70是的,在使用uasort之前,你需要在数组上使用一个shuffle(),忘了它,对不起:)一个用户定义的排序函数就足够了,但是你必须返回-1,0或1,而不是0或1,对于相同的,返回一个布尔值表示不同的!。试试这个:
usort($this->\u ads,function($a,$d){if($a==b){return mt\u rand(0,2)-1;}return($a>$b)?-1:1;})这听起来不错。。。我试过了,但输出并不是我所期望的:现在没有随机的,排序是这样的:100100,45,70,70是的,在使用uasort之前,你需要在数组上使用一个shuffle(),忘了它,对不起:)一个用户定义的排序函数就足够了,但是你必须返回-1,0或1,而不是0或1,对于相同的,返回一个布尔值表示不同的!。试试这个:
usort($this->\u ads,function($a,$d){if($a==b){return mt\u rand(0,2)-1;}return($a>$b)?-1:1;})谢谢,但是现在的输出完全是随机的。。没有分组相同的值没有按DESCMy answer排序的值用于多维数组。谢谢,但现在的输出完全是随机的。。没有分组的相同值没有按DESCMy answer排序的值表示多维数组。