MAMP PRO集成php开发环境使用
弱类型语言
变量作用域(4种
local
function myTest() { global $x,$y; $y=$x+$y; }
myTest(); echo $y; // 输出 15 ?>
<a name="HCfb8"></a>### GLOBALS数组变量的含义```php<?phpfunction myTest(){$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];}?>//echo "变量 y 为: $y";// PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。//这个数组可以在函数内部访问,也可以直接用来更新全局变量。
global
- 全局 函数外部定义的变量,在脚本中任何地方都可以进行访问 ```php <?php $x=5; // 全局变量
// php 变量作用域 /*
- local 局部
- global 全局
- static 静态
- parameter 函数参数作用域 *
- 局部和全局作用域
- 所有函数外部定义的变量,是全局作用域。除了 函数 以外,全局变量可以被脚本中任何部分访问,要在一个函数中访问一个全局变量的话需要使用
- global 关键字对变量进行修饰之后才可以进行使用
*/
?>
```
static
静态 拿出函数中的变量
<?phpfunction myTest(){static $x=0;echo $x;$x++;echo PHP_EOL; // 换行符}// 然后每次调用该函数的时候,该变量会保留函数前一次被调用时的值// 注意: 该变量仍然是函数的 局部变量, 区别于返回值的概念myTest();myTest();myTest();?>
parameter
参数 传参数 ```php <?php
// 参数作用域讲解 /*
- 参数是通过调用代码将值直接传递给函数的局部变量
- 参数是在参数列表中声明,作为函数声明的一部分: /
function p_test($x){
echo "my name is $x";
} p_test(“addicated”); ?>
<a name="VNXKA"></a># echo & print 的区别echo 和 print 区别:- echo - 可以输出一个或多个字符串- print - 只允许输出一个字符串,返回值总为 1- **提示:**echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。<a name="fyjkD"></a>## echo 语句- 是一个语言结构,使用的时候可以不加括号,也可以加上括号<a name="WLAkd"></a>## print语句- 同样是一个语言结构,可以使用括号也可不使用<a name="6frr7"></a># PHP EOF(heredoc) 使用<a name="91q56"></a>## 使用概述- 1,前后接分号否则不过编译- 2,EOF 可以使用任意字符代替,保证开始和结束字符一致即可- 3,结束表示必须顶格独占一行(即必须从行首开始,前后不能衔接任何字符和空白符- 4,开始表示可以不待引号或者单双引号, 不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转移符号- 5. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。```php<?php// 学习php eof的使用// PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言//(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。/*1,前后接分号否则不过编译2,EOF 可以使用任意字符代替,保证开始和结束字符一致即可3,结束表示必须顶格独占一行(即必须从行首开始,前后不能衔接任何字符和空白符4,开始表示可以不待引号或者单双引号, 不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转移符号5. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。*/?><?php// ' 单引号包裹的话就不会被转义成代码,双引号则会进行转意,// "" 双引号会被转移,识别成为代码并由php引擎渲染到页面echo <<<EOF<h1>我的第一个标题</h1><p>我的第一个段落。</p>EOF;// 结束需要独立一行且前后不能空格/*1 以 <<<EOF 开始标记开始,以EOF结束标记结束,结束标记必须定投写,不能有锁紧2 开始标记和结束标记相同,比如常用大写的 EOT,EOD ,EOF 来表示,但是也不限于这几个,可以自定义,只要保证开始标记和结束标记不在正文中出现3 位于开始标记和结束标记之间的变量可以被正常解析,但是函数不可以,在heredoc中,变量不需要链接符 . 或者 , 来拼接*/?><?php$name="runoob";$a= <<<EOF"abc"$name"123"EOF;// 结束需要独立一行且前后不能空格echo $a;?>
数据类型
- 查看数据类型的方法,与python java不一样,是使用 var_dump()来进行 取得value和type
- 字符串 String
- 整形 Integer
- 浮点型 Float
- 布尔型 Boolean
- 数组 Array
- 对象 Object
- 空值 NULL ```php <?php
// 数据类型
//String(字符串), //Integer(整型), //Float(浮点型), //Boolean(布尔型), //Array(数组), //Object(对象), //NULL(空值)。 /*
- 与 java python不一样, 查看数据类型 和值使用var_dump() 方法
- var_dump() 函数返回变量的数据类型和值; */
$x = 5985;
var_dump($x);
echo “
“;
$x = -345; // 负数
var_dump($x);
echo “
“;
$x = 0x8C; // 十六进制数
var_dump($x);
echo “
“;
$x = 047; // 八进制数
var_dump($x);
// 浮点类型
$x = 10.365;
var_dump($x);
echo “
“;
$x = 2.4e3;
var_dump($x);
echo “
“;
$x = 8E-5;
var_dump($x);
// 布尔类型
$x = true;
$y = false;
var_dump($x); var_dump($y); // php 数组
$cars = array(“Volvo”, “BMW”, “Toyota”); var_dump($cars); // 不可直接输出 数组 //echo “$cars” //print “$cars”
// php 对象 //对象数据类型也可以用于存储数据。 // //在 PHP 中,对象必须声明。 // //首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。 // //然后我们在类中定义数据类型,然后在实例化的类中使用数据类型
// 声明类 class Car { var $color;
function __construct($color="green"){$this->color = $color;}function what_color(){return $this->color;}
}
// php 中的null值 /* null 值表示没有值,null是数据类型为null的值, null值值ing一个变量是否为控制,同样可用于数据控制和null值的区别 可以通设置变量值为NULL 来清空变量的数据
*/ $x=”Hello world!”; $x=null; var_dump($x); ?>
<a name="ojdTj"></a># 类型比较<a name="aOr99"></a>## 松散比较- 使用两个 =号来进行比较 ==- 只比较值不比较类型,<a name="Jhn72"></a>## 严格比较- 使用三个 =号来进行比较 ===- 比较值以及类型,都相等才相等<a name="sHVdP"></a>## 代码示例```php<?php/*php 类型比较虽然php是弱类型语言,但是也需要明白变量类型以及含义,因为经常需要对php变量进行比较,包含松散和严格比较*/// 松散比较// 使用两个 == 比较,只比较值不比较类型// 严格比较// 使用三个等号 === 进行比较,除了比较值,也比较类型if(42 == "42") {// 值相等 ,类型不等, 松散比较echo '1、值相等';}echo PHP_EOL; // 换行符if(42 === "42") {echo '2、类型相等';} else {// 值相等,但是类型不相等, === 严格比较echo '3、不相等';}echo " ---------------";echo "php 中比较 0,false,null";echo '0 == false: ';var_dump(0 == false);echo '0 === false: ';var_dump(0 === false);echo PHP_EOL;echo '0 == null: ';var_dump(0 == null);echo '0 === null: ';var_dump(0 === null);echo PHP_EOL;echo 'false == null: ';var_dump(false == null);echo 'false === null: ';var_dump(false === null);echo PHP_EOL;echo '"0" == false: ';var_dump("0" == false);echo '"0" === false: ';var_dump("0" === false);echo PHP_EOL;echo '"0" == null: ';var_dump("0" == null);echo '"0" === null: ';var_dump("0" === null);echo PHP_EOL;echo '"" == false: ';var_dump("" == false);echo '"" === false: ';var_dump("" === false);echo PHP_EOL;echo '"" == null: ';var_dump("" == null);echo '"" === null: ';var_dump("" === null);/*0 == false: bool(true) 0 = "" =null 松散比较时都是 false0 === 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)*/?>
常量 - constant
define()方法讲解
- name - 常量名
- value - 常量值
- case_insensitive - 大小写是否敏感 默认敏感 ```php <?php // php 常量讲解 // 常量在被定义后,在脚本的任何地方都不能被改变
// 常量是一个简单值的表示服,该值在脚本中不能改变 // 一个常量由英文字母,下划线和,数字组成,但是数字不能为首字母 // 常量名不需要加 $ 修饰符 // 注意 : 常量在整个脚本中都可以用
//bool define ( string $name , mixed $value [, bool $case_insensitive = false ] ) // 定义常量,使用define() 函数来进行定义 /*
- 该函数由三个参数
- name 必须
- value 必须,常量值
- case_insensitive 可选 ,如果设置为TRUE,则该常量大小写不敏感,默认为敏感
*/
// 区分大小写的常量名
define(“HELLO”,”hello this is addicated”);
echo HELLO;
echo ‘
‘; //echo HELLO; // 输出 “greeting”
// 不区分大小写的常量名 //// 不区分大小写的常量名 //define(“GREETING”, “欢迎访问 Runoob.com”, true); //echo greeting; // 输出 “欢迎访问 Runoob.com”
// 常量是全局的 define(“GREETING”, “欢迎访问 Runoob.com”);
function myTest() { echo GREETING; }
myTest(); // 输出 “欢迎访问 Runoob.com” // 使用常量的时候不能在前面加上变量符,否则 回导致将常量转换成新的为定义变量使用,会导致报错 // echo / print 常量名,这样来进行使用,一般来说常量都是大写字母,并且大小写敏感 ?>
<a name="LffsL"></a>## 常量使用时注意- 使用的时候不能在常量名前加$符号,会将常量进行转义,产生报错<a name="5PZ1d"></a># 字符串<a name="d6kpc"></a>## 并置符 (.)<a name="IY6jC"></a>## strlen()- 取得字符串的长度<a name="9cHXo"></a>## strpos()- 查找字符串中的字段```php<?php// php 字符串// 字符串变量用于包含有字符的值。////在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。// php并置运算符/*在php中 只有一个字符串运算符,并置运算符 (.) 用来将两个字符串链接起来注意 : 区别于传统的java ,python 的 + 号拼接字符串, 而是通过 . 来进行字符串拼接*/$txt1="Hello world!";$txt2="What a nice day!";echo $txt1 . " " . $txt2;/*PHP strlen() 函数得到字符串的长度,返回的是字符串的长度(字节数)注意 : 常常用在循环和其他函数中用来判断循环结束的条件,比如遍历字符串的话。*/echo strlen("Hello world!");/** PHP strpos() 函数用于在一段字符串中查询一个字符或者一段指定的文本如果找到,,返回第一个匹配的字符位置,没找到,返回false*/// str1 带查找的字符串,str2 要查找的字符echo strpos("Hello world!","world");//提示:在上面的实例中,字符串 "world" 的位置是 6。之所以是 6 而不是 7 的原因是,//字符串中第一个字符的位置是 0,而不是 1。?>
php 字符串常用方法,后续整理
PHP运算符
算数运算符
并置以外,其他如java,python一致
并置赋值运算符
- .=
- a .= b 意为链接两个字符串
自增/自减
比较运算符
| 运算符 | 名称 | 描述 | 实例 | | :—- | :—- | :—- | :—- | | x == y | 等于 | 如果 x 等于 y,则返回 true | 5==8 返回 false | | x === y | 绝对等于 | 如果 x 等于 y,且它们类型相同,则返回 true | 5===”5” 返回 false | | x != y | 不等于 | 如果 x 不等于 y,则返回 true | 5!=8 返回 true | | x <> y | 不等于 | 如果 x 不等于 y,则返回 true | 5<>8 返回 true | | x !== y | 绝对不等于 | 如果 x 不等于 y,或它们类型不相同,则返回 true | 5!==”5” 返回 true | | x > y | 大于 | 如果 x 大于 y,则返回 true | 5>8 返回 false | | x < y | 小于 | 如果 x 小于 y,则返回 true | 5<8 返回 true | | x >= y | 大于等于 | 如果 x 大于或者等于 y,则返回 true | 5>=8 返回 false | | x <= y | 小于等于 | 如果 x 小于或者等于 y,则返回 true | 5<=8 返回 true |
PHP逻辑运算符
| 运算符 | 名称 | 描述 | 实例 |
|---|---|---|---|
| x and y | 与 | 如果 x 和 y 都为 true,则返回 true | x=6 y=3 (x < 10 and y > 1) 返回 true |
| x or y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | x=6 y=3 (x==6 or y==5) 返回 true |
| x xor y | 异或 | 如果 x 和 y 有且仅有一个为 true,则返回 true | x=6 y=3 (x==6 xor y==3) 返回 false |
| x && y | 与 | 如果 x 和 y 都为 true,则返回 true | x=6 y=3 (x < 10 && y > 1) 返回 true |
| x || y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | x=6 y=3 (x==5 || y==5) 返回 false |
| ! x | 非 | 如果 x 不为 true,则返回 true | x=6 y=3 !(x==y) 返回 true |
PHP 数组运算符
| 运算符 | 名称 | 描述 |
|---|---|---|
| x + y | 集合 | x 和 y 的集合 |
| x == y | 相等 | 如果 x 和 y 具有相同的键/值对,则返回 true |
| x === y | 恒等 | 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true |
| x != y | 不相等 | 如果 x 不等于 y,则返回 true |
| x <> y | 不相等 | 如果 x 不等于 y,则返回 true |
| x !== y | 不恒等 | 如果 x 不等于 y,则返回 true |
三元运算符
另一个条件运算符是”?:”(或三元)运算符 。`(expr1) ? (expr2) : (expr3)
解释:
expr1 为 true 时,值为 expr2
expr1 为 false 时, 值为 expr3
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
<?php$test = '菜鸟教程';// 普通写法$username = isset($test) ? $test : 'nobody';echo $username, PHP_EOL;// PHP 5.3+ 版本写法$username = $test ?: 'nobody';echo $username, PHP_EOL;?>注意:PHP_EOL 是一个换行符,兼容更大平台。
在 PHP7+ 版本多了一个 NULL 合并运算符 ??,实例如下:
<?php// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值$username = $_GET['user'] ?? 'nobody';// 类似的三元运算符$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';?>
组合比较符(PHP7+)
PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。
语法格式如下
$c = $a <=> $b;<?php// 整型echo 1 <=> 1; // 0echo 1 <=> 2; // -1echo 2 <=> 1; // 1// 浮点型echo 1.5 <=> 1.5; // 0echo 1.5 <=> 2.5; // -1echo 2.5 <=> 1.5; // 1// 字符串echo "a" <=> "a"; // 0echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1?>
PHP 数组运算符
| 运算符 | 名称 | 描述 |
|---|---|---|
| x + y | 集合 | x 和 y 的集合 |
| x == y | 相等 | 如果 x 和 y 具有相同的键/值对,则返回 true |
| x === y | 恒等 | 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true |
| x != y | 不相等 | 如果 x 不等于 y,则返回 true |
| x <> y | 不相等 | 如果 x 不等于 y,则返回 true |
| x !== y | 不恒等 | 如果 x 不等于 y,则返回 true |
三元运算符
语法格式
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
组合比较符(PHP7+)
- PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。
语法格式如下:`$c = $a <=> $b;
- 如果 $a > $b, 则 $c 的值为 1。
- 如果 $a == $b, 则 $c 的值为 0。
- 如果 $a < $b, 则 $c 的值为 -1。 ```php <?php // 整型 echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1
// 浮点型 echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1
// 字符串 echo “a” <=> “a”; // 0 echo “a” <=> “b”; // -1 echo “b” <=> “a”; // 1 ?>
<a name="yhVzH"></a>## 运算符优先级下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。<br />**说明**:左 = 从左到右,右 = 从右到左。| 结合方向 | 运算符 | 附加信息 || :--- | :--- | :--- || 无 | clone new | clone 和 new || 左 | [ | array() || 右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 || 无 | instanceof | 类型 || 右 | ! | 逻辑运算符 || 左 | * / % | 算术运算符 || 左 | + – . | 算术运算符和字符串运算符 || 左 | << >> | 位运算符 || 无 | == != === !== <> | 比较运算符 || 左 | & | 位运算符和引用 || 左 | ^ | 位运算符 || 左 | | | 位运算符 || 左 | && | 逻辑运算符 || 左 | || | 逻辑运算符 || 左 | ? : | 三元运算符 || 右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 || 左 | and | 逻辑运算符 || 左 | xor | 逻辑运算符 || 左 | or | 逻辑运算符 || 左 | , | 多处用到 |运算符优先级中,or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样。<a name="YouN6"></a>## 实例```php<?php// 优先级: && > = > and// 优先级: || > = > or$a = 3;$b = false;$c = $a or $b;var_dump($c); // 这里的 $c 为 int 值3,而不是 boolean 值 true$d = $a || $b;var_dump($d); //这里的 $d 就是 boolean 值 true?>int(3)bool(true)
括号的使用
- 我们通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。 ```php <?php // 括号优先运算
$a = 1; $b = 2; $c = 3; $d = $a + $b $c; echo $d; echo “\n”; $e = ($a + $b) $c; // 使用括号 echo $e; echo “\n”; ?> 7 9
<a name="sP792"></a># PHP if -else -elseif- 与常规语言一致,没有什么差别,略<a name="rHLK9"></a># PHP Switch```php<?phpswitch (n){case label1:如果 n=label1,此处代码将执行;break;case label2:如果 n=label2,此处代码将执行;break;default:如果 n 既不等于 label1 也不等于 label2,此处代码将执行;}?>工作原理:首先对一个简单的表达式 n(通常是变量)进行一次计算。将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。代码执行后,使用 break 来阻止代码跳入下一个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行。<?php$favcolor="red";switch ($favcolor){case "red":echo "你喜欢的颜色是红色!";break;case "blue":echo "你喜欢的颜色是蓝色!";break;case "green":echo "你喜欢的颜色是绿色!";break;default:echo "你喜欢的颜色不是 红, 蓝, 或绿色!";}?>
PHP 数组
创建数组
- 使用 array()
php中,有三种类型的数组
人工分配ID键
$cars[0]="Volvo";$cars[1]="BMW";$cars[2]="Toyota";
自动分配ID键
`$cars=array("Volvo","BMW","Toyota");
实例
<?php$cars=array("Volvo","BMW","Toyota");echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";?>
获取数组长度- count() 长度
count() 函数用于返回数组的长度(元素的数量)
<?php$cars=array("Volvo","BMW","Toyota");echo count($cars);?>3
遍历
for循环 ```php <?php $cars=array(“Volvo”,”BMW”,”Toyota”); $arrlength=count($cars);
for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo “
“;
}
?>
<a name="YiiMT"></a>## PHP关联数组- 关联数组是分配指定键的数组,类似kv键值对的感觉<a name="yjeGv"></a>### 两种创建方法- ``$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");````php$age['Peter']="35";$age['Ben']="37";$age['Joe']="43";
随后可以类似键值对的方式取值
<?php$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");echo "Peter is " . $age['Peter'] . " years old.";?>
遍历关联数组
<?php$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");foreach($age as $x=>$x_value){echo "Key=" . $x . ", Value=" . $x_value;echo "<br>";}?>
