1

我有这个数组

$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" 
} 

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

4

2 回答 2

2

您不能使用 var_dump 来完成此操作。您需要自己的循环从自定义起始索引进行打印。从起始索引开始,在每次迭代时将循环迭代器递增 1,直到循环长度为数组时间。如果要访问数组元素,请使用loopIterator mod length of array

于 2012-12-26T15:45:40.857 回答
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

于 2012-12-26T15:53:45.710 回答