php的爆炸数组索引
使用PHP的爆炸与下面的代码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')
你可以是这样的:
$temp = array_combine(range(1, count($temp)), array_values($temp));
使用array_combine()
使用现有的值(使用array_values()
)和range()
创建1一个新的范围,以您的数组的大小,以创建数组
阵列后索引从0开始。如果你真的想让数组从一个开始,你可以将它分解,然后将它复制到另一个使用索引的数组定义为从1开始 - 但为什么?
你可以使用这个可能(未经测试)
$newArray=array_unshift($temp,' ');
unset($newArray[0]);
这是考虑它的正确方法,但是Lloyd Watkin的功能更少一些,因为他将'$ data'字符串与额外的分隔符相提并论。 – mickmackusa 2017-04-02 11:47:30
它使用爆炸是不可能的。
for($i = count($temp) - 1; $i >= 0; $i--)
$temp[$i + 1] = $temp[$i];
unset($temp[0]);
您的领导声明不正确。解决这个问题的一些最好的两步法结合了'explode()'。尽量不要用这种说法来误导SO读者。 – mickmackusa 2017-04-02 11:45:04
你不能直接这样做,但是这样做会做你想要的东西r:
$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"
}
请学会正确格式化您的代码 – ManseUK 2012-07-25 13:39:02
快速复制并从终端粘贴 – 2012-07-25 13:43:53
Lloyd Watkin的答案使最少的函数调用达到预期的结果。对于ManseUK的方法来说,它肯定是一个优越的答案,在字符串爆炸后,它的单线程使用四个函数。
由于这个问题是近5年来,老应该有一些有价值的东西来补充,如果有人敢现在帮腔......
我有两件事情来解决:
-
的OP和Lloyd Watkins都未能根据样本字符串将正确的分隔符分配给他们的爆炸方法。分隔符应该是后面跟一个空格。
样品输入:
$data="test_1, test_2, test_3";
-
没有人提供了劳埃德的双功能的方法相匹配的一个班轮解决方案。这里说的是:(Demo)
$temp=array_slice(explode(", ",", $data"),1,null,true);
这两个函数的单行预先考虑
$data
串用逗号,然后爆炸前的空间。然后array_slice
忽略第一个空元素,并从第二个元素(1
)返回到结尾(null
),同时保留键(true
)。根据需要输出:
array( 1 => 'test_1', 2 => 'test_2', 3 => 'test_3', )
@lgt本页其他答案的范围从低效到论证不正确。请考虑将接受的答案转换为我的答案,因为未来的SO读者可能会感到困惑,误导和/或复制/粘贴低效的代码。 – mickmackusa 2017-04-02 12:29:18
这是无益的,和更好的资格作为对问题与回答的评论。请考虑删除此答案,因为它只能用作页面膨胀。 Downvoted。 – mickmackusa 2017-04-02 11:41:45
PDO的'bindValue()'参数是1索引的,它可以直接用于设置数组键,以迭代并设置所有bindValue参数和值,而无需额外处理。 – mickmackusa 2017-04-02 12:05:50