Php 从数组中删除元素时,unset会保留空索引
我在中找到了许多答案,因此“unset”将从数组中删除元素,但在运行此代码后,我发现了完全不同的结果。 索引3和4不应该存在,但它们确实存在 有人能解释一下吗Php 从数组中删除元素时,unset会保留空索引,php,Php,我在中找到了许多答案,因此“unset”将从数组中删除元素,但在运行此代码后,我发现了完全不同的结果。 索引3和4不应该存在,但它们确实存在 有人能解释一下吗 $offset_arr = array(); array_push($offset_arr, array('11','22','33','11','22','33','11','22','33','33','005')); array_push($offset_arr, array('11','22','33','11','22','33
$offset_arr = array();
array_push($offset_arr, array('11','22','33','11','22','33','11','22','33','33','005'));
array_push($offset_arr, array('11','22','33','11','22','33','11','22','33','33','005'));
array_push($offset_arr, array('11','22','33','11','22','33','11','22','33','33','006'));
array_push($offset_arr, array('11','22','33','11','22','33','11','22','33','33','007'));
array_push($offset_arr, array('11','22','33','11','22','33','11','22','33','33','008'));
$temp_arr = make_offset_array_size_smaller($offset_arr);
echo "\n\nafter running a function array size=".count($temp_arr)."\n\n";
print_r($temp_arr);
print_r($temp_arr[4]); // I don't want this. It should work for [2] not [4]
function make_offset_array_size_smaller($input_arr){
$result_arr = array();
$lowest_value = '1000';
foreach($input_arr as $row_arr) {
if((int)($lowest_value) > (int)($row_arr[10])) {
$lowest_value = $row_arr[10];
}
}
$input2_arr = $input_arr;
foreach($input2_arr as $elementKey => $element) {
echo "\n --- ".$elementKey." - ".$element[10];
if((int)($lowest_value) == (int)($element[10])) {
unset($input2_arr[$elementKey]);
}
}
return $input2_arr;
}
结果
--- 0 - 005
--- 1 - 005
--- 2 - 006
--- 3 - 007
--- 4 - 008
after running a function array size=3
Array
(
[2] => Array
(
[0] => 11
[1] => 22
[2] => 33
[3] => 11
[4] => 22
[5] => 33
[6] => 11
[7] => 22
[8] => 33
[9] => 33
[10] => 006
)
[3] => Array
(
[0] => 11
[1] => 22
[2] => 33
[3] => 11
[4] => 22
[5] => 33
[6] => 11
[7] => 22
[8] => 33
[9] => 33
[10] => 007
)
[4] => Array
(
[0] => 11
[1] => 22
[2] => 33
[3] => 11
[4] => 22
[5] => 33
[6] => 11
[7] => 22
[8] => 33
[9] => 33
[10] => 008
)
)
Array
(
[0] => 11
[1] => 22
[2] => 33
[3] => 11
[4] => 22
[5] => 33
[6] => 11
[7] => 22
[8] => 33
[9] => 33
[10] => 008
)
请尝试
array\u值($arr)
来修复索引。这是正确的答案。再回答一次,但不是作为注释,你会得到一个分数。数组索引就像db id键一样,间隙不应该是一个问题。如果你有一个临时表,在其中添加几个元素,然后减去其中一些元素,所有这些都会在循环中发生,并且你不知道要添加或减去多少元素,那么映射可能是一个问题。对于SQL DB,您不会将表视为临时表,或者很少使用它。