php数组删除元素示例

我们来举一个例子:

如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排:

复制代码 代码如下:

复制代码 代码如下:

 代码如下

$arr = array(‘a’,’b’,’c’,’d’);
unset($arr[1]);
print_r($arr);
?>

<?php 
$arr = array(‘a’,’b’,’c’,’d’); 
unset($arr[1]); 
print_r($arr); 
?>

<?php 
$arr = array(‘a’,’b’,’c’,’d’);
unset($arr[1]);
print_r($arr);
?>

print_r($arr)之后,结果却不是那样的,最终结果是 Array ( [0] => a
[2] => c [3] => d
那么怎么才能做到缺少的元素会被填补并且数组会被重新索引呢?答案是array_splice():
复制代码 代码如下:

我之前想象的是unset之后,数组$arr应该会压缩数组以填补缺少的元素位置,但print_r($arr)之后,结果却不是那样的,最终结果是
Array ( [0] => a [2] => c [3] => d );
如果是这样的话,那我们就来看看数字数组的形式

结果是:

$arr = array(‘a’,’b’,’c’,’d’);
array_splice($arr,1,1);
print_r($arr); // Array ( [0] => a [1]
=> c [2] => d )
?>

复制代码 代码如下:

Array ( [0] => a [2] => c [3] => d )

<?php 
$arr = range(5,10,4); 
print_r($arr);//<span style=”font-family: Simsun;font-size:16px;
“>Array ( [0] => 5 [1] => 6 [2] => 7 [3] => 8
[4] => 9 [5] => 10 )</span> 
 unset($arr[1]);//<span style=”font-family: Simsun;font-size:16px;
“>Array ( [0] => 5 [2] => 7 [3] => 8 [4] => 9
[5] => 10 )</span> 
print_r($arr); 
?>

 
那么怎么才能做到缺少的元素会被填补并且数组会被重新索引呢?答案是array_splice():

可以看到输出的形式也是数组是会填补缺少的元素的位置。那么怎么才能做到缺少的元素会被填补并且数组会被重新索引呢?答案是array_splice():<pre
name=”code” class=”php”><?php 

 代码如下

复制代码 代码如下:

<?php 
$arr = array(‘a’,’b’,’c’,’d’); 
array_splice($arr,1,1); 
print_r($arr);
?>

$arr = array(‘a’,’b’,’c’,’d’); 
array_splice($arr,1,1); 
print_r($arr); // <span style=”font-family: Simsun;font-size:16px;
“>Array ( [0] => a [1] => c [2] => d )</span> 
?>

结果是:

Array ( [0] => a [1] => c [2] => d )

 
删除数组中特定元素

 代码如下

<?php
$arr2 = array(1,3, 5,7,8);
foreach ($arr2 as
$key=>$value)
{
    if ($value === 3)
        unset($arr2[$key]);
}
var_dump($arr2);
?>

补充删除空数组

实例:

 代码如下

<?php
    $array = (‘a’ => “abc”, ‘b’ => “bcd”,’c’ =>”cde”,’d’
=>”def”,’e’=>””);
    array_filter($array);
    echo “<pre>”;
    print_r($array);
?>
结果:

Array (
     [a] => abc
     [b] => bcd
     [c] => cde
    [d] => def
)

总结

array_splice()函数删除的话,数组的索引值也变化了。
unset()函数删除的话,数组的索引值没有变化。

发表评论

电子邮件地址不会被公开。 必填项已用*标注