<?php
// 八种数据类型: 整型 浮点型 布尔值 空 字符串 数组 对象 资源
// PHP所有变量有一个美元符号($)
// 变量赋值
$name = "Tom";
echo $name;
// 变量赋值多行内容
$detail = "\nthis is first line
this is second line\n";
echo $detail;
// 全局变量
$a = 20;
function global_func(){
// print($a); // Undefined variable
global $a; // 访问全局变量
print($a); // 20
$GLOBALS['a'] += 30; // 修改全局变量
echo "\n";
}
global_func();
print($a); // 50
echo "\n";
// 静态变量
function static_func(){
static $a = 1;
echo "a=";
echo $a;
echo "\n";
$a += 1;
}
static_func(); // a=1
static_func(); // a=2
static_func(); // a=3
// 常量定义
define("MAX", 20);
// 常量访问
print MAX; // 20
print "\n";
print(constant("MAX")); // 20
print "\n";
// PHP比较运算符 == ===(值和类型都相同) <> != !==(值不同或类型不同)
?>
<?php
// 结构控制
if (1 < 2){
print("1<2");
}
else{
print("1>=2");
}
print "\n";
// 1<2
// 循环类型
// 有4种方式:for、while、do...while、foreach,前面3种和C语言中类似
for($i=1; $i<=3; $i++){
print($i);
print "\n";
}
// 1 2 3
$i = 1;
while ($i<=3) {
print $i;
print " ";
$i++;
}
print "\n";
// 1 2 3
do{
print $i;
print " ";
$i--;
} while($i>0);
print "\n";
// 4 3 2 1
// 遍历数组, 指针移动
$list = array(1, 2, 3, 4, 5);
foreach ($list as $value) {
print "value = $value ";
}
print "\n";
// value = 1 value = 2 value = 3 value = 4 value = 5
// 数组 3种
// 数字数组
$numbers = array(1, 2, 3, 4, 5);
foreach ($numbers as $value) {
print("$value ");
}
print "\n";
// 1 2 3 4 5
// 修改数组元素
$numbers[0] = "one";
$numbers[1] = "two";
$numbers[2] = "three";
foreach ($numbers as $value) {
print("$value ");
}
print "\n";
// one two three 4 5
// 新建数组
$names[0] = 1;
$names[2] = 2;
foreach ($names as $value) {
print("$value ");
}
print "\n";
// 1 2
// 获取数组长度
$length = count($numbers);
for($i=0; $i<$length; $i++){
print($numbers[$i]);
print(" ");
}
print "\n";
// one two three 4 5
// 关联数组 PHP 5.5.36, 相当于python的字典
$people = ["Tom"=>"20", "Jack"=>"30", "Jimi"=>"40"];
// 访问数组元素
print($people["Tom"]);
print(" ");
print($people["Jack"]);
print(" ");
print($people["Jimi"]);
print("\n");
// 20 30 40
// 修改数组元素
$people["Tom"] = 50;
$people["Jack"] = 60;
$people["Jimi"] = 70;
// 遍历数组元素
foreach ($people as $key => $value) {
print("$key=>$value\n");
}
print("\n");
// Tom=>50
// Jack=>60
// Jimi=>70
// 多维数组
$cars = array(
"first" => [
"name" => "car1",
"color" => "white"
],
"second" => [
"name" => "car2",
"color" => "black"
]);
// 访问多维数组元素
print($cars["first"]["name"]); # car1
print("\n");
// PHP数组排序函数
/*
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
*/
// 字符串
// 双引号串 中的内容可以被解释而且替换
// 单引号串 中的内容总被认为是普通字符
// 字符串并置运算符(.):把两个变量连接在一起
$a = "hello";
$b = "world";
print($a . " " . $b); // hello world
print("\n");
// 计算字符串的长度
$c = "中国";
print(strlen($a)); // 5
print(strlen($c)); // 6
// 查找字符串
print(strpos($a, "ll")); // 2
print(strpos($a, "xx")); // FALSE
print("\n");
// 函数
// $a普通参数, &$b引用参数, $c默认参数
function func_args($a, &$b, $c=2){
$a += 1;
$b += 1;
$c += 1;
print("a=$a b=$b c=$c\n"); // a=2 b=2 c=3
return $a; // 返回值
}
$args_a = 1;
$args_b = 1;
$ret = func_args($args_a, $args_b);
print("ret=$ret\n"); // ret=2
print("args_a=$args_a args_b=$args_b\n");
// args_a=1 args_b=2
?>