PHPの配列要素のキーをリセットしますか?


124

問題は、たとえばアレイのキーをリセットする方法です。

Array ( 
    [1_Name] => Array ( 
        [1] => leo 
        [4] => NULL 
    ) 
    [1_Phone] => Array ( 
        [1] => 12345 
        [4] => 434324
    )  
)

にリセット:

Array ( 
    [1_Name] => Array ( 
        [0] => leo 
        [1] => NULL 
    ) 
    [1_Phone] => Array ( 
        [0] => 12345 
        [1] => 434324
    ) 
)

:この回答をチェック stackoverflow.com/questions/5943149/...
Web_Developer

回答:


294

配列内のすべての配列のキーをリセットするには:

$arr = array_map('array_values', $arr);

第1レベルの配列キーをリセットするだけの場合は、array_values()なしで使用しarray_mapます。


9
なんらかの理由で配列のキーをリセットせず、array_values関数のみを使用する必要がありました。
SSH 2013

1
@SSHここで求められているように、配列の配列で使用しましたか?
だます

1
いいえ、それは問題でした。これは「配列要素のキーをリセットする」ことになっていると思いましたが、そうではありませんでした。
SSH

3
array_mapを使用する必要はありません:$ ret = array_values($ ret); 数字キーをリセットするには十分です
Marek Lewandowski 2013年

2
値をリセットするためのarray_valuesの使用が文書化されているかどうかはわかりませんが、文書化されているはずです。これは本当に私が書いていた行の数を
減らすのに役立ちました

192
$array[9] = 'Apple';
$array[12] = 'Orange';
$array[5] = 'Peach';

$array = array_values($array);

この関数を使用して、アレイをリセットできます

$array[0] = 'Apple';
$array[1] = 'Orange';
$array[2] = 'Peach';

この解決策は私にとって
うまくいっ


8

ここでは、decezeが提供する方法と、単純なarray_valuesアプローチとの違いを確認できます。

アレイ:

$array['a'][0] = array('x' => 1, 'y' => 2, 'z' => 3);
$array['a'][5] = array('x' => 4, 'y' => 5, 'z' => 6);

$array['b'][1] = array('x' => 7, 'y' => 8, 'z' => 9);
$array['b'][7] = array('x' => 10, 'y' => 11, 'z' => 12);

ところでdeceze、ここにあなたの出力があります:

$array = array_map('array_values', $array);
print_r($array);

/* Output */

Array
(
    [a] => Array
        (
            [0] => Array
                (
                    [x] => 1
                    [y] => 2
                    [z] => 3
                )
            [1] => Array
                (
                    [x] => 4
                    [y] => 5
                    [z] => 6
                )
        )
    [b] => Array
        (
            [0] => Array
                (
                    [x] => 7
                    [y] => 8
                    [z] => 9
                )

            [1] => Array
                (
                    [x] => 10
                    [y] => 11
                    [z] => 12
                )
        )
)

そして、array_values関数のみを使用した場合の出力は次のとおりです。

$array = array_values($array);
print_r($array);

/* Output */

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [x] => 1
                    [y] => 2
                    [z] => 3
                )
            [5] => Array
                (
                    [x] => 4
                    [y] => 5
                    [z] => 6
                )
        )
    [1] => Array
        (
            [1] => Array
                (
                    [x] => 7
                    [y] => 8
                    [z] => 9
                )
            [7] => Array
                (
                    [x] => 10
                    [y] => 11
                    [z] => 12
                )
        )
)

5
$result = ['5' => 'cherry', '7' => 'apple'];
array_multisort($result, SORT_ASC);
print_r($result);

配列([0] =>リンゴ[1] =>チェリー)

//...
array_multisort($result, SORT_DESC);
//...

配列([0] =>チェリー[1] =>リンゴ)


-7

これにはPHPネイティブ関数が存在します。http://php.net/manual/en/function.reset.phpを参照してください

単にこれを行う: mixed reset ( array &$array )


4
リンクしているマニュアルを読んでください。reset他のことをします。
だます

ポインタを配列の最初の要素に移動するだけです。デフォルトの状態0、1、2 ... NでキーをドロップするTopicstarter検索方法。
SlowSuperman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.