在PHP中反转数组

6
array(7) {
  [0]=> array(2) { ["id"]=> string(1) "9"  ["roi"]=> float(0)    }
  [1]=> array(2) { ["id"]=> string(1) "1"  ["roi"]=> float(0)    }
  [2]=> array(2) { ["id"]=> string(2) "10" ["roi"]=> float(0)    }
  [3]=> array(2) { ["id"]=> string(2) "14" ["roi"]=> float(0)    }
  [4]=> array(2) { ["id"]=> string(1) "4"  ["roi"]=> float(0)    }
  [5]=> array(2) { ["id"]=> string(1) "5"  ["roi"]=> float(141)  }
  [6]=> array(2) { ["id"]=> string(1) "6"  ["roi"]=> float(2600) }
}

我只是想将其反转,使id为6(且roi为2600)的元素排在数组的最前面等。 如何实现呢?使用 array_reverse()rsort() 无法解决这个问题。

1
这些都不是正确答案吗? - pcarvalho
1
你就这样放弃了吗?如果没有人帮助你,那就发布你的解决方案并将其标记为已接受。 - AbraCadaver
6个回答

24

因为他们想要保持关键字的关联性? - Niet the Dark Absol
@Kolink 所以呢?array_reverse()就是这样做的。我建议你阅读文档 - PeeHaa
1
啊,原来是这样,使用额外的 preserve_keys 参数就可以了。我的错误。 - Niet the Dark Absol

1
foreach($array as $arr){

  array_unshift($array, $arr); 
  array_pop($array);

}

1
$res = array(
    0=>array("id"=>9, "roi"=>0),
    1=>array("id"=>1,"roi"=>0),
    2=>array("id"=>10,"roi"=>0),
    3=>array("id"=>14,"roi"=>0),
    4=>array("id"=>4,"roi"=>0),
    5=>array("id"=>5,"roi"=>141),
    6=>array("id"=>6,"roi"=>2600));

$res4   =   array(); 
$count  = count($res);

for($i=$count-1;$i>=0;$i--){
    $res4[$i] =$res[$i]; 
}

print_r($res4);

0
您可以使用usort()函数,如下所示。
$arr = array('......'); // your array
usort($arr, "my_reverse_array");

function my_reverse_array($a, $b) {
    if($a['roi'] == $b['roi'])
    {
        return 0;
    }
    return ($a['roi'] < $b['roi']) ? -1 : 1;
}

这将确保具有最高投资回报率的项目在数组中排名第一。


0
$res = array(
    0=>array("id"=>9, "roi"=>0),
    1=>array("id"=>1,"roi"=>0),
    2=>array("id"=>10,"roi"=>0),
    3=>array("id"=>14,"roi"=>0),
    4=>array("id"=>4,"roi"=>0),
    5=>array("id"=>5,"roi"=>141),
    6=>array("id"=>6,"roi"=>2600));
    $count = count($res);

    for ($i=0, $j=$count-1; $i<=floor($count/2); $i++, $j--) {
        $temp = $res[$j];
        $res[$j] = $res[$i];
        $res[$i] = $temp;
    }
    echo '<pre>';
    print_r($res);
    echo '</pre>';

0

这很简单。可以使用 PHP 的 usort 函数,例如:

usort($arr, function($a, $b) {    
  return $b['roi'] - $a['roi'];    
});

只需要交换位置$a$b就可以了,这样是正确的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接