php的爆炸数组索引

时间:2012-07-25 13:22:08

标签: php arrays

使用php'使用以下代码进行爆炸

$data="test_1, test_2, test_3";
$temp= explode(",",$data);

我得到一个像这样的数组

array('0'=>'test_1', '1'=>'test_2', 2='test_3')

爆炸后我想拥有的东西

array('1'=>'test_1', '2'=>'test_2', 3='test_3')

6 个答案:

答案 0 :(得分:2)

你可以这样:

$temp = array_combine(range(1, count($temp)), array_values($temp));

使用array_combine()使用现有值(使用array_values())和range()创建数组,以创建从1到数组大小的新范围

Working example here

答案 1 :(得分:1)

数组索引从0开始。如果你真的想让数组以1开头,你可以将它爆炸,然后将其复制到另一个数组,并将索引定义为从1开始 - 但为什么?

答案 2 :(得分:0)

你可以使用这个(未经测试的)

$newArray=array_unshift($temp,' ');
unset($newArray[0]);

答案 3 :(得分:0)

使用爆炸是不可能的。

for($i = count($temp) - 1; $i >= 0; $i--) 
    $temp[$i + 1] = $temp[$i];
unset($temp[0]);

答案 4 :(得分:0)

你无法直接做到,但这会做你想要的事情:

$temp=explode(',',',' . $data);
unset($temp[0]);
var_dump($temp);
array(3) {
  [1]=>
  string(6) "test_1"
  [2]=>
  string(7) " test_2"
  [3]=>
  string(7) " test_3"
}

答案 5 :(得分:0)

劳埃德·沃特金(Lloyd Watkin)的回答使得最少的函数调用达到预期的结果。它肯定是ManseUK方法的优秀答案,该方法在字符串爆炸后在其单行中使用四个函数。

由于这个问题差不多5年了,如果有人敢在现在这样做,那么应该有一些有价值的东西可以添加......

我有两件事需要解决:

  1. OP和Lloyd Watkins都未能根据样本字符串为其爆炸方法分配正确的分隔符。分隔符应该是逗号后跟空格。

    示例输入:

    f
  2. 没有人提供符合劳埃德双功能方法的单线解决方案。这是:(Demo

    $data="test_1, test_2, test_3";
    

    这个双功能单行前置$temp=array_slice(explode(", ",", $data"),1,null,true); 字符串前面有一个逗号,然后是一个空格,然后爆炸它。然后$data忽略第一个空元素,并从第二个元素(array_slice)返回到结尾(1),同时保留键(null)。

    根据需要输出:

    true