php中从数组中移除某个值,可以有两种方式,一种是常规的遍历比值然后移除,另一种是利用array_diff函数。
先利用是利用遍历数组的方式写了个函数:
function array_delete_value($array,$delete_value){
foreach ( $array AS $k=>$v ) {
if ( $v === $delete_value ) {
unset($array[$k]);
}
}
return $array;
}
用法:array_delete_value(原数组,待移除的值);
两种方式的使用:
1.利用自定义函数:
$del='';
$t=0;
function array_delete_value($array,$delete_value){
foreach ( $array AS $k=>$v ) {
if ( $v === $delete_value ) {
unset($array[$k]);
}
}
return $array;
}
for ( $i=1;$i<5000;$i++ ) {
$s1=microtime(true);
$file2=array('','net920','cn','','xxxx','kkkk','sdfasd','53453','sdfsadfsafddsaf',0);
$file2=array_delete_value($file2,$del);
$s2=microtime(true);
$t=$t + ($s2-$s1);
}
echo number_format($t/$i,10);
print_r($file2);
?>
2.利用array_diff函数:
$del='';
$t=0;
for ( $i=1;$i<5000;$i++ ) {
$s3=microtime(true);
$file=array('','net920','cn','','xxxx','kkkk','sdfasd','53453','sdfsadfsafddsaf',0);
$file=array_values(array_diff($file, array($del)));
$s4=microtime(true);
$t=$t + ($s4-$s3);
}
echo number_format($t/$i,10);
print_r($file);
?>
从效率上来说,使用自定义方式效率稍微高一点点,不多,呵呵。看情况来决定吧,自定义函数方式不会改变键名,第二种方式会改变键名。
标签:PHP, 函数