[PHP]数组移除某个值的两种方式

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.利用自定义函数:

<?php
$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函数:

<?php
$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);
?>

从效率上来说,使用自定义方式效率稍微高一点点,不多,呵呵。看情况来决定吧,自定义函数方式不会改变键名,第二种方式会改变键名。

ISBN的校验

维基百科提供的ISBN码校验算法:

校验码的计算方法(10码)

假设某国际标准书号号码前9位是:7-309-04547

计算加权和S:S = 7×10+3×9+0×8+9×7+0×6+4×5+5×4+4×3+7×2 = 226

计算S÷11的余数M:M = 226 mod 11 = 6

计算11 – M 的差N:N = 11 ? 6 = 5

如果N = 10,校验码是字母”X”

如果N = 11,校验码是数字”0″

如果N为其他数字,校验码是数字N

所以,本书的校验码是5;如果用户提供的ISBN码是7-309-04547-6,那么校验失败

校验码的计算方法(13码)

假设某国际标准书号号码前12位是:978-986-181-728

计算加权和S:S = (9×1)+(7×3)+(8×1)+(9×3)+(8×1)+(6×3)+(1×1)+(8×3)+(1×1)+(7×3)+(2×1)+(8×3) = 164

计算S÷10的余数M:M = 164 mod 10 = 4

计算10 – M 的差N:N = 10 ? 4 = 6

如果N = 10,校验码是数字”0″

如果N为其他数字,校验码是数字N

所以,本书的校验码是6。完整的国际标准书号号码为 ISBN 978-986-181-728-6

下面是在网上看到的一段利用PHP进行ISBN进行校验的函数: 更多 »

一个有意思的函数传参方法

最近在做的项目,虽然有很多前端的东西,现在不喜欢搞前端,觉得特麻烦,累。不如后台程序部分好玩,直接写代码还是很有意思的。
说实话,这么多年始终对于javascript属于入门汉的状态,主要是觉得javascript相对与服务端的PHP来说,不如PHP直接跟数据库打交道有意思。
不过,最近接触了好多jQuery,突然发现javascript原来不需要了解太多了,哈哈。jQuery真的是个好东西。
在使用和制作jQuery扩展的时候,发现jQuery有一个很有趣的函数传参办法,那就是直接利用数组或者已经格式化了的json字符串,这样做的好处显而易见——不必要记住函数参数的具体顺序,哪个在先哪个在后都无所谓。
现在懒得学习了,PHP手册也仅仅找需要的,加之英语实在不太好,所以在我的印象里,似乎php没有类似的方法(当然PHP类的那个不算在内)
晚上无聊的时候,尝试写了一个乱弹代码,觉得还是挺好玩的。 更多 »

Deepseath Modified from Green Hope Theme · Proudly powered by WordPress · 津ICP备09005418号-1  津公网安备 12010302001005号