我正在开发一个我的项目,并且有一个基于硬件的组件,它可以回收我收集的数据并通过该数组创建。一个功能是比较一个阵列和另一个阵列中的数据。我遇到的一件事很麻烦,因为它似乎总是在数组的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
答案 0 :(得分: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]);
答案 1 :(得分: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;
}