PHP 也是另外种编程语言,作为另外一种编程语言,PHP 也具备着绝大多数语言都有的特点,例如变量、条件分支、循环、函数等等,不同的是每个语言都会有自己的语法规定。这里不用太过担心,这些语法规定与之前学习的编程语言大同小异,对我们来说不会有太大的压力。
变量是编程语言中临时存放数据的容器。
PHP 中申明一个变量是用一个美元符号后面跟变量名来表示。变量名同样是区分大小写的。PHP 中变量无需声明类型,变量的类型根据值的类型来推断。
<?php
$foo; // 申明一个变量,变量名为 `foo`,未对其进行赋值
$bar = 'baz'; // 申明一个变量,将一个值为 `baz` 的字符串赋值给它
echo $foo; // 输出一个变量名为 `foo` 的变量
fn($bar); // 将一个变量名为 `foo` 的变量作为 `fn` 的实参传递
常见的 PHP 数据类型与 JavaScript 基本一致:
string(字符串)
integer(整型)—— 只能存整数
float(浮点型)—— 可以存带小数位的数字
boolean(布尔型)
array(数组)
object(对象)
NULL(空)
Resource(资源类型)
Callback / Callable(回调或者叫可调用类型)
PHP 有多种创建字符串的方式:单引号、双引号等。
不支持特殊的转义符号,例如 \n
如果要表示一个单引号字符内容,可以通过 ’ 表达如果要表示一个反斜线字符内容,可以通过 \ 表达
支持转义符号
支持变量解析
<?php
// ====== 单引号 ======
echo 'hello\nworld'; // => `hello\nworld`
echo 'I\'m a better man';
// => `I'm a better man`
echo 'OS path: C:\\Windows'; // => `OS path: C:\Windows`
// ====== 双引号 ======
echo "hello\nworld"; // => `hello
// world`
$name = 'zce';
echo "hello $name"; // => `hello zce`
<?php
// PHP 所有能力都是函数,内置1000多个函数
$str = 'hello';
// 获取字符串长度
echo strlen($str);
echo '<br>';
// 获取中文字符串(宽字符)的长度
// strlen 只能获取拉丁文的长度
// 内置成员函数直接使用
echo strlen('你好');
echo '<br>';
// PHP 中专门为 宽字符集 添加了一套 API
// 这一套 API 不在内置的 1000+ 里面,而是在一个模块(php_mbstring.dll)中
// 模块成员必须通过配置文件载入模块过后再使用
// 所有的API 都是 mb_xxxx
echo mb_strlen('你好');
// 配置 PHP 扩展的步骤
// 1. 在 PHP 的安装目录去创建一个 php.in
// 2. extension_dir
// 3. ;extension=php_mbstring.dll
// 4. 默认Apache加载的php.ini 是去 Windows目录找的
// 5. 可以通过 Apache 的配置文件修改默认加载路径 PHPIniDir
http://php.net/manual/zh/ref.strings.php
推荐w3c school:http://www.w3school.com.cn/php/php_string.asp
PHP 中数组可以分为两类:
<?php
// 定义一个索引数组
$arr = array(1, 2, 3, 4, 5);
var_dump($arr);
// PHP 5.4 以后定义的方式可以用 `[]`
$arr2 = [1, 2, 3, 4, 5];
var_dump($arr2);
有点类似于 JavaScript 中的对象
<?php
// 注意:键只能是`integer`或者`string`
$arr = array('key1' => 'value1', 'key2' => 'value2');
var_dump($arr);
// PHP 5.4 以后定义的方式可以用 `[]`
$arr2 = ['key1' => 'value1', 'key2' => 'value2'];
var_dump($arr2);
isset
// isset 也可判断数组中是否有指定的键
// 这种类似于 JavaScript 的方式虽然可以达到效果,但是会有警告
if ($dict['foo']) {
echo $dict['foo'];
} else {
echo '没有';
}
// isset 会吞掉 Undefined index 的警告
if (isset($dict['foo'])) {
echo $dict['foo'];
} else {
echo '没有';
}
// isset($dict['foo'])
// $dict['foo'] =>
// isset()
// empty($dict['foo']) 相当于 !isset($dict['foo']) || $dict['foo'] == false
if (empty($dict['foo'])) {
echo '没有';
} else {
echo $dict['foo'];
}
// empty 的实现
// function empty ($input) {
// return !isset($input) || $input == false
// }
函数太多可以参考php手册
参考:http://php.net/manual/zh/language.types.type-juggling.php
<?php
$str = '132';
// 将一个内容为数字的字符串强制转换为一个整形的数字
$num = (int)$str;
// 将一个数字强制转换为布尔值
$flag = (bool)$num;
数学运算符,逻辑运算符与 JavaScript 基本一致,无额外特殊情况。
字符串连接(拼接)采用的是比较特殊的 .
<?php
$name = 'zce';
// 拼接 `hey ` 和 `zce`
$message = 'hey ' . $name;
// 相当于 +=
$foo .= $message
分号分割
if、switch、while、for、 foreach、function…
if … else
switch … case
for
while
foreach — 专门用来遍历数组
<?php
$arr = array('name' => 'zhangsan', 'age' => '18');
foreach ($arr as $key => $value) {
echo $key . ' ' . $value;
}
指令式的 if、for、foreach、while 单独掌握
<?php
// 指令式就是将开始 { 换成 : 结束 } 换成 endif;
if ($i > 0) :
echo 'ok' endif;
// for foreach while 也是一样
for ($i = 0; $i < 10; $i++) :
echo $i; endfor;
定义与使用函数的方式与 JavaScript 相同:
<?php
// 函数名不区分大小写
function foo ($name, $title) {
echo "$name ($title)";
}
// 调用
foo('zce', 'UFO');
Foo('zgd', 'SBO'); // 大小写不区分
注意:使用方式有点差异(函数名不区分大小写),但是不要这么搞!!!
建议在 PHP 中采用下划线式(snake_case)做命名规则,不管是函数还是变量
联系客服