显示行号

|

选择喜欢的代码风格

默认

GitHub

Dune

LakeSide

Plateau

Vibrant

Blue

Eighties

Tranquil

PHP 是一门庞大的语言,各个水平层次的开发者都可以利用它进行迅捷高效的开发。然而在对语言逐渐深入的学习过程中,我们往往会因为走捷径和/或不良习惯而忘记(或忽视掉)基础的知识。为了帮助彻底解决这个问题,这一章的目的就是提醒开发人员注意有关 PHP 的基础编程实践。

$a = 5; // 5 是个整型 integer

var_dump($a == 5); // 比较数值; 返回 true

var_dump($a == '5'); // 比较数值; (忽略类型); 返回 true

var_dump($a === 5); // 比较类型/数值; (整型 vs. 整型); 返回 true

var_dump($a === '5'); // 比较类型/数值; (整型 vs. 字符串); 返回 false!

//Equality comparisons

if (strpos('testing', 'test')) { // 'test' 在位置 0 找到, 而 0 在布尔类型里被解释成了 'false'

// code...

}

// vs. 严格比较

if (strpos('testing', 'test') !== false) { // (0 !== false), 用 === 严格比较,返回true

// code...

}

比较运算符

在PHP中运用比较运算符,经常容易被大家被忽视一些问题,经常导致许多意想不到的结果。 其中一个问题源于严格的比较(将布尔值作为整数进行比较),撸代码说明:

推荐在PHP官网中更多阅读:

If 条件判断

在函数或类方法中使用“if / else”语句时,有一种常见的误解,即“else”必须结合使用。 实际上,如果结果是定义返回值,'else'不是必需的,因为'return'将结束该函数,即便写虽然没错,但导致'else'变得没有更多的实际意义,比如:

function test($a)

{

if ($a) {

return true;

} else {

return false;

}

}

// vs.

function test($a)

{

if ($a) {

return true;

}

return false; // else 在这里并不需要了

}

// 简写可以这样:

function test($a)

{

return (bool) $a;

}

推荐在PHP官网中更多阅读:

Switch 语句

Switch 判断是个不错的结构,但用的时候,有几个坑需要注意:

Switch 只比较数值,而不比较类型,记得上面说的例子吗? (对,等同于 ‘==’)

Switch 里的Case会一个个的去比较,直到找到匹配为止。 如果未找到匹配项,则使用默认值(如果已定义 default)

如果没有 ‘break’, 会不停的继续,直到遇到 break 才返回

在函数中,使用'return'可以直接返回,不会一直去找到 'break' 才停止

上面说的可能有点拗口,还是直接上代码解释:

$answer = test(2); // 将从 'case 2' 和 'case 3' 一直执行,因为case 2里没有break..

function test($a)

{

switch ($a) {

case 1:

// code...

break; // break 用来停止 switch 结构

case 2:

// code... // 如果没有 break, 将到下一个比较 'case 3'

case 3:

// code...

return $result; // 在一个 function 函数里, 'return' 将直接结束返回

default:

// code...

return $error;

}

}

推荐更多阅读:

PHP中比较 0、false、null 和 '' 的坑

除非你真的知道你在用==比较什么,一般情况用===更安全。

测试代码:

//test.php

echo '0 == false: ';

var_dump(0 == false);

echo '0 === false: ';

var_dump(0 === false);

echo "\n";

echo '0 == null: ';

var_dump(0 == null);

echo '0 === null: ';

var_dump(0 === null);

echo "\n";

echo 'false == null: ';

var_dump(false == null);

echo 'false === null: ';

var_dump(false === null);

echo "\n";

echo '"0" == false: ';

var_dump("0" == false);

echo '"0" === false: ';

var_dump("0" === false);

echo "\n";

echo '"0" == null: ';

var_dump("0" == null);

echo '"0" === null: ';

var_dump("0" === null);

echo "\n";

echo '"" == false: ';

var_dump("" == false);

echo '"" === false: ';

var_dump("" === false);

echo "\n";

echo '"" == null: ';

var_dump("" == null);

echo '"" == null: ';

var_dump("" === null);

测试结果:

→ php test.php

0 == false: bool(true)

0 === false: bool(false)

0 == null: bool(true)

0 === null: bool(false)

false == null: bool(true)

false === null: bool(false)

"0" == false: bool(true)

"0" === false: bool(false)

"0" == null: bool(false)

"0" === null: bool(false)

"" == false: bool(true)

"" === false: bool(false)

"" == null: bool(true)

"" == null: bool(false)

比如像 array_search,没找到返回 false,找到了返回 key,而 key 是可能为 0 的:

猜猜下面代码返回什么?

$test=array(100, 101, 102, 103);

if($key=array_search(100, $test)){

echo $key;

}

else{

echo "Not found";

}

发表评论

switch php 比大小,PHP 基础:比较、If、Switch相关推荐

  1. 第三次学JAVA再学不好就吃翔(part11)--基础语法之switch语句

    学习笔记,仅供参考 文章目录 JAVA基础语法 switch语句 if语句和switch语句的区别 JAVA基础语法 switch语句 格式 switch (表达式) {case 值1:语句体1;br ...

  2. 微信小程序--修改switch组件的大小size

    修改switch组件的大小 小程序中switch组件的大小往往和实际项目中的大小有些出入,但是发现文档中并没有修改大小的方法,但是可以根据自己的实际情况进行颜色设置. 直接上代码: <switc ...

  3. switch在C++中的用法以及用switch结构时要注意的问题(细节问题比较全面)

    在做题时发现自己将大一学的switch忘得差不多了,特地回顾一下.有不对地方欢迎指出,一起探讨. 用switch结构时注意的问题: 1.switch只能接受整型和字符型,所以后面的各个case的取值也 ...

  4. java switch枚举类,使用枚举类enum代替switch

    使用枚举类enum代替switch 使用枚举类,能大大减少switch的代码量,提高代码阅读性 public enum TestEnum { stu1("小明", "一班 ...

  5. 3.java基础--- if、switch语句编程题

    java基础- 3if语句编程题 if判断语句 题目1(训练) 李雷想买一个价值7988元的新手机,她的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新的优惠,把她的旧手机交给店家,新手机就能 ...

  6. php switch 函数,PHP丨PHP基础知识之条件语SWITCH判断「理论篇」

    Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择.以PHP来说,switch(开关语句)常和case break default一起使用 典型结构 switch($control ...

  7. android各目录大小,Android 基础篇 — 放不同drawable文件夹中图片的大小

    我们接着上篇文章Android 基础篇 - 不同DPI取哪个本地文件夹中的资源 讲,文末尾提到一个问题,为什么不同drawable文件夹中的图片大小在终端设备会不一样? 1 准备 在drawable- ...

  8. 微信小程序修改switch组件的大小

    在使用switch组件时,想修改switch的大小,设置的height,width都没有效果, 查看官方文档,发现没有设置大小的属性 官方文档如下: 原来大小样式: 使用下面样式可进行修改 .wx-s ...

  9. switch java 语法_Java_基础语法之switch语句

    classSwitchTest {public static voidmain(String[] args) {/*int week =2; switch(week) { case 1: System ...

最新文章

  1. MatlabR2016a在ubuntu系统下的安装教程
  2. 互联网造车如火如荼,我们错怪贾跃亭了? | 圆桌脱口秀
  3. 基于jQuery实现富文本的拖拽和修改大小
  4. 一个图片 在另一个图片定位_一个好的listing,图片有哪些基本要求
  5. 转载:2014年流行的手机App小图标界面设计欣赏(1)
  6. 小师妹学JavaIO之:文件写入那些事
  7. 如何优雅的追到女神夕小瑶
  8. 用VBA模拟7段数码管显示数字
  9. 蓝桥杯:十六进制转八进制
  10. 深度学习进行领域适应(Domain Adaptation)开山之作
  11. Julia: 如何一次性insert Array{Any,2} to SQLite DB?
  12. xp系统的无线配置服务器,Windows XP系统下无线网卡配置及安装
  13. pgadmin4 本地安装部署
  14. BP算法的原理解释和推导
  15. 微软放弃数字图书馆计划
  16. 小程序改变swiper样式(带缩略图)
  17. 力扣772 基本计算器III
  18. 计算机一级execl怎么学,【计算机一级 excel】大学计算机一级excle
  19. Crypto 学习第二天
  20. 淘口令是什么?淘口令怎么在电脑上打开?【已解决】

热门文章

  1. vivado中bit文件怎么没有生成_「干货」FPGA设计中深度约束技巧及调试经验总结...
  2. Python获取代理IP地址
  3. Windows判断是否为64位程序(C++)
  4. django学习----01HelloWorld
  5. python类中变量作用域_python进阶14变量作用域LEGB
  6. Php二叉树对称,PHP如何实现判断二叉树是否对称
  7. mysql workbench查询快捷_mysql workbench快捷键
  8. beoplay耳机序列号查询_BO Beoplay E8评测:真正无线耳机,可自定义EQ设置和透明模式!...
  9. python实现IIR高通低通,带通,带阻滤波器详解及应用案例
  10. OpenShift 4.3 - 基于虚拟机的BareMetal离线安装(5-6)