2

配列を取得するために展開される文字列があります。ご存知のように、出力配列キーは、最初の要素のキーとして 0 から始まり、2 番目の要素のキーとして 1 から始まります。

その配列を 0 ではなく 1 から強制的に開始する方法は?

次のように書くことができるので、型付き配列の場合は非常に簡単です。

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

しかし、爆発を使用してオンザフライで作成された配列の場合、どうすればよいですか?

ありがとう。

4

5 に答える 5

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

終わり!

于 2012-10-30T22:34:21.920 に答える
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);
}
于 2012-10-30T22:46:31.043 に答える
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);
于 2012-10-30T22:34:53.877 に答える
1
$somearray = explode(",",$somestring);

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

まあ汚いですが、それはphpの目的ではありません...

于 2012-10-30T22:32:32.057 に答える
1

ネイトはほとんどそれを持っていましたが、一時変数が必要でした:

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

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

コードパッドの例

于 2012-10-30T22:33:56.453 に答える