-1

我正在研究我的一个项目,并且有一个基于硬件的组件,可以将我收集的数据发回并通过该数组创建。一个功能是比较一个数组和另一个数组中的数据。我遇到的一件麻烦事是,2由于它是如何循环的,它似乎总是在数组的索引中放置一个值。我的问题是,该0 and 1数组中的值没有任何内容。它们是抵消的。我如何将索引中的值移动20数组的索引,或者以更动态的方式;把它放在第一个可用的插槽中。

想法和建议表示赞赏。

编辑:

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" }

或者,如果您只有一个键并且它始终在索引 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 回答