-1

私は私のプロジェクトに取り組んでおり、収集したデータを送り返すハードウェアベースのコンポーネントを持っており、それを介して配列が作成されます。1 つの関数が、ある配列内のデータと別の配列内のデータを比較しています。私が遭遇した厄介なことは、2それがループしている方法のために、常に配列のインデックスに値を配置しているように見えることです。私の質問は、0 and 1その配列の値には何も含まれていないということです。それらはオフセットされています。2インデックス内のその値を配列のインデックス0に、またはより動的な方法で移動するにはどうすればよいですか。最初に利用可能なスロットに入れます。

考えや提案は大歓迎です。

編集:

Array ( [2] => 0x0000000000000000004004490529 )- これは print_r() を使用して出力されます

アップデート:

配列を反復処理したときの出力は次のとおりです。

Notice: Undefined offset: 0 in daemon.php on line 259

Notice: Undefined offset: 1 in daemon.php on line 259
4

2 に答える 2

2
$array = array_merge($array);

これにより、配列が0から再インデックスされます

$array = array(2 => 'foo'); // your starting point
$array = array_merge($array);
var_dump($array);
// array(1) { [0]=> string(3) "foo" }

または、キーが 1 つしかなく、常にインデックス 2 にある場合は、次の簡単な方法でも実行できます。

$array = array(2 => 'foo'); // your starting point
$array[0] = $array[2];
unset($array[2]);
于 2013-11-01T13:35:03.877 に答える
2

次を使用して、すべてのキーをリセットできますarray_values

$array = array_values($array);

例:

<?php
    $array = array(
        0 => 'baz',
        2 => 'foo',
        4 => 'bar'
    );

    $array = array_values($array);

    print_r($array);
    /*
        Array
        (
            [0] => baz
            [1] => foo
            [2] => bar
        )
    */
?>

デモ

基本的array_valuesに (PHP で再コーディングする場合) は次のとおりです。

function array_values($array) {
    $return = array();

    foreach ($array as $value) {
        $return[] = $value;
    }

    return $return;
}
于 2013-11-01T13:36:54.890 に答える