php爆炸并强制数组键从1开始而不是0

时间:2012-10-30 22:29:43

标签: php arrays explode array-key

我有一个字符串将被爆炸以获得一个数组,并且我们知道,输出数组键将从0开始作为第一个元素的键,1开始用于第二个元素,依此类推。

现在如何强制该数组从1开始而不是0?

对于类型化数组来说非常简单,因为我们可以像这样编写它:

array('1'=>'value', 'another value', 'and another one');

但是对于使用explode动态创建的数组,该怎么做?

感谢。

5 个答案:

答案 0 :(得分:17)

$exploded = explode('.', 'a.string.to.explode');
$exploded = array_combine(range(1, count($exploded)), $exploded);
var_dump($exploded);

完成!

答案 1 :(得分:3)

只需使用分隔符在数组的头部创建一个虚拟元素,然后将其删除。它应该是最有效的工作方式:

function explode_from_1($separator, $string) {
    $x = explode($separator, $separator.$string);
    unset($x[0]);
    return $x;
}

更通用的方法:

function explode_from_x($separator, $string, $offset=1) {
    $x = explode($separator, str_repeat($separator, $offset).$string);
    return array_slice($x,$offset,null,true);
}

答案 2 :(得分:1)

$somearray = explode(",",$somestring);

foreach($somearray as $key=>$value)
{
   $otherarray[$key+1] = $value;
}
好吧,它的脏,但不是PHP的用途......

答案 3 :(得分:1)

Nate几乎拥有它,但需要一个临时变量:

$someArray = explode(",",$myString);
$tempArray = array();

foreach($someArray as $key=>$value) {
   $tempArray[$key+1] = $value;
}
$someArray = $tempArray;

codepad example

答案 4 :(得分:1)

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

$flip = array_flip($array);
foreach($flip as &$element) {
    $element++;
}
$normal = array_flip($flip);
print_r($normal);

试试这个,一个相当时髦的解决方案:P

编辑:改用它。

$array = array('a', 'b', 'b', 'd');
$new_array = array();

$keys = array_keys($array);
for($i=0; $i<count($array); $i++) {
    $new_array[$i+1] = $array[$i];
}
print_r($new_array);