使用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')
答案 0 :(得分:2)
你可以这样:
$temp = array_combine(range(1, count($temp)), array_values($temp));
使用array_combine()
使用现有值(使用array_values()
)和range()
创建数组,以创建从1到数组大小的新范围
答案 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年了,如果有人敢在现在这样做,那么应该有一些有价值的东西可以添加......
我有两件事需要解决:
OP和Lloyd Watkins都未能根据样本字符串为其爆炸方法分配正确的分隔符。分隔符应该是逗号后跟空格。
示例输入:
f
没有人提供符合劳埃德双功能方法的单线解决方案。这是:(Demo)
$data="test_1, test_2, test_3";
这个双功能单行前置$temp=array_slice(explode(", ",", $data"),1,null,true);
字符串前面有一个逗号,然后是一个空格,然后爆炸它。然后$data
忽略第一个空元素,并从第二个元素(array_slice
)返回到结尾(1
),同时保留键(null
)。
根据需要输出:
true