为什么$val
是Array(1),而不是数值?我预计$selected as $k => $val
应该返回数组$selected
中的每一行。因此,$k
必须是一个数字键(它是),$val
必须是相应的数值(但它是一个数组,而不是简单的整数)。那么,如何正确保存数组$ind
和$ranks
中的排序键和值呢?
<?php
$selected = array();
for ($i=0; $i<5; $i++) {
$selected[] = array($i => rand(0,5));
}
arsort($selected);
$ind = array();
$rank = array();
foreach($selected as $k => $val) {
$ind[] = $k;
$rank[] = $val;
}
?>
更新:对于incstance,此代码。。
for ($i=0; $i<5; $i++) {
$selected[$i] = rand(0,5);
}
提供阵列:[0]=>5,[1]=>3,[2]=>2,[3]=>5,[4]=>3
一旦我对它进行了排序,初始键就会被删除,对吧?数组排序后,如何找到随机生成值的初始键[0]-[4]?
我认为您可能的解决方案是更改
$selected[] = array($i => rand(0,5));
至
$selected[] = rand(0,5);
这样做将产生如下的$ind
和$rank
:
Array
(
[0] => 0
[1] => 3
[2] => 2
[3] => 4
[4] => 1
)
Array
(
[0] => 4
[1] => 3
[2] => 1
[3] => 0
[4] => 0
)
做你想做的事情的最好方法是只使用结果数组,例如:
$selected
Array
(
[1] => 5
[2] => 5
[4] => 4
[0] => 2
[3] => 1
)
我认为这就是您需要的
for ($i=0; $i<5; $i++) {
$selected[$i] = rand(0,5);
}
您的数组结构如下所示:
array(
0 => array(0 => 1),
1 => array(1 => 4),
...
)
因为您在此处分配数组:
$selected[] = array($i => rand(0,5));
你只需要这个:
$selected[] = rand(0,5);
嗨,我不太确定您要做什么,但下面的代码正在创建一个数组。
$selected = array();
for ($i=0; $i<5; $i++) {
$selected[] = array($i => rand(0,5));
}
所以$val将是一个数组。您可以尝试以下代码:
$selected = array();
for ($i=0; $i<5; $i++) {
$selected[] = rand(0,5);
}
感谢