按索引预设对数组进行排序

时间:2012-12-26 15:41:19

标签: php arrays

我有这个数组

$immagini = array('1.jpg','2.jpg','3.jpg','4.jpg');

如果我让var_dump($ immagini)返回此

    array(4) { 
[0]=> string(5) "1.jpg" 
[1]=> string(5) "2.jpg" 
[2]=> string(5) "3.jpg" 
[3]=> string(5) "4.jpg" 
} 

现在如何以其他方式订购它们,我喜欢从索引[2]开始....所以我想要这个结果

array(4) {
 [2]=> string(5) "3.jpg" 
 [3]=> string(5) "4.jpg" 
 [0]=> string(5) "1.jpg" 
 [1]=> string(5) "2.jpg" 
} 

我想从索引中返回完整列表

2 个答案:

答案 0 :(得分:2)

您不能使用var_dump来实现这一目标。您需要自己的循环来从自定义起始索引进行打印。从起始索引开始,并在每次迭代时将循环迭代器增加1,直到循环数组时间为止。如果要访问数组元素,请使用loopIterator mod length of array

答案 1 :(得分:1)

您可以使用移动所有索引的比较函数对它们进行排序< 2到列表的末尾。例如,这里将进行这样的比较:

function cmp($a,$b) {
    $a = ($a < 2) ? $a + 1000 : $a;
    $b = ($b < 2) ? $b + 1000 : $b;
    return $a - $b;
}

这样称呼:

$immagini = array('1.jpg','2.jpg','3.jpg','4.jpg');
uksort($immagini, 'cmp');
var_dump($immagini);

提供以下输出:

array(4) {
  [2]=>
  string(5) "3.jpg"
  [3]=>
  string(5) "4.jpg"
  [0]=>
  string(5) "1.jpg"
  [1]=>
  string(5) "2.jpg"
}

演示:http://ideone.com/XeAkQL

相关问题