PHP 知识汇总

一、array_search的小陷阱

转载地址:http://blog.minimee.org/2012/09/07/array_search.html

在PHP的数组函数中我们可以看到这样一个函数:

mixed array_search ( mixed $needle , array $haystack [, bool $strict ] )

array_search可以让我们在一个数组中搜索是否含有某一个值,比如:

$array = array(0 => 'blue',1 => 'red');
// $key = 1
$key = array_search('red',$array);

这个函数给我们提供了非常好用的数组搜索功能,当在数组中找到指定值的时候会返回该值的键值。

但是我们必须小心的使用这个函数,因为它的返回值可能会给我们带来一些问题,我们在下面的代码:

$framework = 'laravel';

$frameworks = array(0 => 'laravel',1 => 'cakephp',2 => 'codeigniter');

if(array_search($framework,$frameworks)){
    echo 'Got it';
}
else{
    echo 'Sorry.';
}

通常情况下我们习惯用if(true){//..}这样的判断方式。

上面的代码中我们想确认已有的框架数组是否包含laravel框架,从代码上看我们预期的结果是Got it,但实际上我们看到的是Sorry。

frameworks数组中包含有laravel这个值,但是我们却得到了意外的答案,这就是我们需要注意到地方。

在PHP5中array_search在没有找到指定值时会返回FALSE,找到的情况下会返回键值。我们可以看到上面的代码中laravel值的键值是0,因此我们查找laravel的返回是0。

这个0会给我们带来困扰,上面代码可以简化成这样:

if(0){
    echo 'Got it.';
}else{
    echo 'Sorry.';
}

程序不会知道这个0到底是false还是键值0,在上面的情况中它会被认为是false。我们需要更加准备的判断返回值:

$framework = 'laravel';

$frameworks = array(0 => 'laravel',1 => 'cakephp',2 => 'codeigniter');

if(false !== array_search($framework,$frameworks)){
    echo 'Got it';
}
else{
    echo 'Sorry.';
}

-- EOF --

二、去除数组里的空值

由于没有去空值的数组函数,我们可以利用

      array_diff — 计算数组的差集
说明
array

array_diff

( array $array1, array $array2 [, array $ ...] ) 

array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。

去空值的例子:

$array = array("a","b","",null,"c");

$array = array_diff($array, array(null,'null','',' '));

即可去除,注意在去除之后,很可能用到下面的重建数组索引的功能,参加第三条

三、重建数组索引

在unset()数组中的一项之后,会有个问题,就是数组索引不再连续,这时,我们可能就需要重建数组索引,

在这里我走了很多的弯路,总是找不到时解决方案,即便是想出来了,实现起来也很复杂,后来终于找到了方法,有个函数叫:array_values

array array_values ( array $input ) 

array_values() 返回 input 数组中所有的值并给其建立数字索引。
下面是代码:

function rebuildArrayIndex($array){
	$tempArray=array();
	$tempArray=array_values($array);
	return $tempArray;
}

四、MYSQL 插入、更新数据库前的注意事项

1、要对用户自已能输入的所有项进行转义,否则当用户输入",/等影响到数据库的字符时,会导致数据库更新不成功

转义的SQL语句是:mysql_real_escape_string()

五、如何在PHP页面执行随机加入的大段的PHP代码

有时我们想执行一大段的动态加进来的PHP代码,比如,我在数据库中有一个字段里根据不同条件获取不同的PHP代码段,但获取了之后怎么夹在当前页面执行就是个问题了,查了很多资料也无从下手,eval()看似可行,但它不能执行大段的PHP代码,这里我想到了include  ‘’,我的解决办法是,先将该段代码写入到一个指定的PHP文件中,然后再将它include到当前页面,这样,当前页面就能执行这段代码了。





你可能感兴趣的:(PHP 知识汇总)