学习php中常用语句与函数

1、while循环多用于不清楚循环次数的情况下,如需要把从数据库中读取出的多条记录(不清楚到底有多少条)并且要根据某个字段的值进行分类,每类值的具体数目,如下图:

其中选项有三种值,对每个值的票数时行统计:

$bood_total = 0;
$bood_futures = array();
$init = array('不会','不好说','会');
$q = $db->query("SELECT bood_futures,COUNT(bood_futures) as number FROM seo_bood_search GROUP BY bood_futures");
while($r = $db->fetch_array($q)){
$bood_total += $r['number'];
$bood_futures[$r['bood_futures']] = $r['number'];
}
foreach($init as $i){
if(!isset($bood_futures[$i])){
$bood_futures[$i] = 0;
}
}

2.foreach用于数组的循环,有两种格式:

(1)foreach($array as $value){echo $value;}这是对数组进行“读”的操作,运行效率比使用while(list($key) = each($array)){echo $array[$key];}效率高,

foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。)

(2)foreach($array as $key->$value){echo $array[$key] = $value;}这是对数组进行“写”的操作,支行效果不如while(list($key) = each($array)){echo $array[$key];}

那么对数组进行“读”的时候使用foreach(),写的时候则使用while();

3.容易混淆的isset()/empty()/in_array(),大多时候是不知如何更准确的使用它们:

(1)isset($var),只有当$var被设置成NULL,或者变量在被检查之前用unset($var)释放了之后返回flase;只能对变量进行检查是否设置,不适用于常量;

(2)empty($var),当$var为0,‘0’,‘’,空数组(array()),没有任何属性的对象,定义后没赋值的变量等的值为真,其它为假;即当$var非空或非零时返回false;

(3)in_array($value,$array,$type),in_array(0, array(‘a’))却为真,正是因为php是弱类型的,in_array将0 和’a’ 比较时,0是number数字类型,’a'是string字符串类型,而number数字类型 和string字符串类型进行比较的时候,会先将string类型首先转化为number类型再进行比较。 ‘s’转化为number后结果为0,所以in_array(0, array(‘a’))的结果自然就是true。

只有把$type设置成true时才行,意思是比较它们的数据类型,上例中不设置的话会自动将字符串类型的转换成数值型的。

原文地址:https://www.cnblogs.com/anns/p/3291717.html