4

例如,我想更改数组的索引。我有一个数组

$a = array("a","e","i","o","u");
echo $a[0]; //output a

这意味着这个数组有索引 (0,1,2,3,4)

现在我想从索引 100 而不是 0 开始我的数组

表示具有索引的数组 (100,200,300,400,500)

4

7 回答 7

5

如果你想以这种方式声明一个数组,你应该这样做:

$array = array(100 => 'a', 200 => 'b', 300 => 'c', 400 => 'd', 500 => 'e');

请注意,如果您以$array较短的方式 ( $array[] = 'f') 添加新元素,则分配的键将为501.

如果要将常规数组索引转换为基于数百个的索引,可以这样做:

$temp = array();
foreach ($array as $key => $value) {
    $temp[(($key + 1) * 100)] = $value;
}
$array = $temp;

但也许你真的不需要转换任何数组,而是以这种方式访问​​你当前的数组:

$i = $hundredBasedIndex / 100 - 1;
echo $array[$i];
// or directly
echo $array[($hundredBasedIndex / 100 - 1)];
于 2012-11-22T09:58:04.117 回答
4

其他解决方案:

$a = array_combine(array(100, 200, 300, 400, 500), $a);
于 2012-11-22T10:04:46.153 回答
1

您可以简单地定义一个起始索引并迭代交换索引的数组。像这样的东西-

$oldArray = array("a","e","i","o","u");  
$newArray = array();
$startIndex = 100;

foreach($oldArray AS $key => $value){
  $newArray[$startIndex] = $value;
  startIndex += 100;
}
于 2012-11-22T09:59:45.753 回答
0

只需将键作为您想要的索引的关联数组。例如 :

$myArray = array(100=>"a",200=>"e",300=>"i",400=>"o",500=>"u");

然后您将这些值称为:

echo $myArray[100] ;

注意:不要放 '100'=>"a"代替100=>"a"

于 2012-11-22T10:00:17.270 回答
0

$key = 数组(100, 200, 300, 400, 500);

$b = array_combine($key, $a);

于 2012-11-22T10:06:45.627 回答
-1

只需以这种方式创建数组。

$myarray = array(
    100 => 'a',
    200 => 'b',
);

如果您已经有一个具有该顺序的数组,并且想要将键乘以 100,则可以在循环中执行此操作(还有其他方法,但是...):

$a = array('a', 'b', 'c', 'd', 'e');

$newarray = array();
foreach($a as $key => $value)
    $newarray[100*($key+1)] = $value;
于 2012-11-22T09:57:55.350 回答
-1

只需像这样更改您的数组:

$a = array(100 => "a", 200 => "e", 300 => "i", 400 => "o", 500 => "u");
于 2012-11-22T09:58:13.707 回答