Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数组中删除元素时,unset会保留空索引_Php - Fatal编程技术网

Php 从数组中删除元素时,unset会保留空索引

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

我在中找到了许多答案,因此“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','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,您不会将表视为临时表,或者很少使用它。