geek的技术日志,记录每一次技术思考的闪光点。

PHP入门学习之PHP基础语法

1、脚本标签

 

<?php  

// PHP 代码  

?>  

2、输出

有两种在浏览器输出文本的基础指令:echo 和 print

echo – 可以输出一个或多个字符串
print – 只允许输出一个字符串,返回值总为 1
echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

<?php  

echo “<h2>PHP is fun!</h2>”;  

echo “Hello world!<br>”;  

echo “I’m about to learn PHP!<br>”;  

echo “This”” string”” was”” made”” with multiple parameters.”;  

?>  

3、变量

以$开头,大小写敏感

<?php  

$x=5;  

$y=6;  

$z=$x+$y;  

echo $z;  

?>  

4、弱类型

弱类型,不必声明类型

5、常量

<1>(整个脚本中)自动全局

<2>没有$开头

<3>可以设置(常量名)大小写是否敏感

 

<?php  

define(“GREETING”“Hello World!”);  

echo GREETING;  

?>  

 

 

<?php  

define(“GREETING”“Hello World”<span style=“font-family: Arial, Helvetica, sans-serif;”>, true);</span>  

echo greeting;  

?>  

<4>在函数内直接引用常量,不需要像变量那么麻烦

 

 <!DOCTYPE html>  

<html>  

<body>  

 

<?php  

define(“GREETING”“Hello World!”);  

function test()  

{  

    echo GREETING;//可以正常输出  

}  

test();  

?>    

 

</body>  

</html>  

<5>函数外可以直接引用函数内定义的常量

 

 <!DOCTYPE html>  

<html>  

<body>  

 

<?php  

 

function test()  

{  

    define(“GREETING”“Hello World!”);  

}  

test();  

echo GREETING;//正常输出  

?>    

 

</body>  

</html>  

 

6、变量作用域

<1>函数内不能直接访问全局变量

<?php   

$x=5; // 全局变量   

 

function myTest()   

{   

    $y=10; // 局部变量   

    echo “<p>测试函数内变量:<p>”;   

    echo “变量 x 为: $x”//这样的方法访问不到全局的$x,所以这里输出为空  

    echo “<br>”;   

    echo “变量 y 为: $y”;   

}    

 

myTest();   

 

echo “<p>测试函数外变量:<p>”;   

echo “变量 x 为: $x”;   

echo “<br>”;   

echo “变量 y 为: $y”;   

?>  

<2>使用$GLOBAL可以在函数内访问全局变量

 

<?php  

$x=5;  

$y=10;  

 

function myTest()  

{  

$GLOBALS[‘y’]=$GLOBALS[‘x’]+$GLOBALS[‘y’];  

}   

 

myTest();  

echo $y;//15  

?>  

<3>static作用域

定义在函数内的变量,每次调用完都是清空的,但是加了static他就可以保存住

<?php   

 

function myTest()   

{   

    static $x=0;   

    echo $x;   

    $x++;   

}   

 

myTest(); //0  

myTest(); //1  

myTest(); //2  

?>   

对于全局变量来说,有没有static没有差别

<?php   

 

static $x=0;  

 

function myTest()   

{   

    echo $GLOBALS[‘x’];  

    $GLOBALS[‘x’]++;   

}   

 

myTest(); //0  

myTest(); //1  

myTest(); //2  

?>   

对一个局部变量来说,加了static并不会改变他的作用域

<?php   

 

function myTest()   

{   

    static $x = 0;  

    echo $x;  

    $x++;  

}   

echo $x;//注意,这里会提示此变量未定义  

myTest();   

myTest();   

myTest();   

?>   

 

7、数据类型

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)

可以说一个Array搞定一切

<1>整型

<?php   

$x = 5985;  

var_dump($x);  

echo “<br>”;   

$x = -345; // 负数   

var_dump($x);  

echo “<br>”;   

$x = 0x8C; // 十六进制数  

var_dump($x);  

echo “<br>”;  

$x = 047; // 八进制数  

var_dump($x);  

?>  

<2>浮点型

 

<?php   

$x = 10.365;  

var_dump($x);  

echo “<br>”;   

$x = 2.4e3;  

var_dump($x);  

echo “<br>”;   

$x = 8E-5;  

var_dump($x);  

?>  

<3>布尔型

$x=true;  

$y=false;  

<4>数组

<?php   

$cars=array(“Volvo”,“BMW”,“Toyota”);  

var_dump($cars);  

?>  

-数组里面可以是键值对,还可以用”+”将两个数组连接成一个数组

<!DOCTYPE html>  

<html>  

<body>  

 

<?php  

$x = array(“a” => “red”“b” => “green”);   

$y = array(“c” => “blue”“d” => “yellow”);   

$z=$x+$y;  

echo $z[‘a’];  

$x[‘a’]=“black”;  

echo “<br>”;  

echo $z[‘a’];//red  

echo “<br>”;  

echo $x[‘a’];//black  

?>     

 

</body>  

</html>  

可以看到这个$z已经把所有元素复制过去,而非仅仅是一个引用,改变了原数组的元素,并不会改变$z的元素。
-count可以返回数组长度

 

<?php  

$cars=array(“Volvo”,“BMW”,“Toyota”);  

echo count($cars);  

?>  

-遍历数组

<?php  

$cars=array(“Volvo”,“BMW”,“Toyota”);  

$arrlength=count($cars);  

 

for($x=0;$x<$arrlength;$x++)  

{  

echo $cars[$x];  

echo “<br>”;  

}  

?>  

-关联数组(键值对)

$age=array(“Peter”=>“35”,“Ben”=>“37”,“Joe”=>“43”);//创建方法1  

//创建方法2  

$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 $myKey=>$myValue)  

{  

echo “Key=” . $myKey . “, Value=” . $myValue;  

echo “<br>”;  

}  

?>  

<5>对象

派生到我的代码片

<?php  

class Car  

{  

  var $color;  

  function Car($color=“green”) {  

    $this->color = $color;  

  }  

  function what_color() {  

    return $this->color;  

  }  

}  

?>  

<6>NULL

<?php  

$x=“Hello world!”;  

$x=null;  

var_dump($x);  

?>  

<7>字符串

-并置运算符”.”,相当于别的语言的”+”号

派生到我的代码片

<?php   

$txt1=“Hello world!”;   

$txt2=“What a nice day!”;   

echo $txt1 . ” “ . $txt2;   

?>  

-strlen()返回字符串长度

 

<?php   

echo strlen(“Hello world!”);   

?>  

-strpos()返回一段字符串在另一个字符串中的index

 

<?php   

echo strpos(“Hello world!”,“world”);   

?>  

 

8、运算符

<1>三元运算符

 

<?php  

$test = ‘菜鸟教程’;  

// 普通写法  

$username = isset($test) ? $test : ‘nobody’;//isset判断bool值,string是否已赋值  

echo $username, PHP_EOL;  

 

// PHP 5.3+ 版本写法  

$username = $test ?$test.“hello”‘nobody’;  

//$username = $test ?: ‘nobody’;//也可以这样省略  

echo $username, PHP_EOL;//PHP_EOL是换行符  

?>  

 

9、数组排序

<1>sort()升序排列

 

<?php  

$cars=array(“Volvo”,“BMW”,“Toyota”);  

sort($cars);  

echo “$cars[0]”;//BMW,字母小的排前面  

?>  

 

<?php  

$numbers=array(4,6,2,22,11);  

sort($numbers);  

echo “$numbers[0]”;//2,数值小的排前面  

?>  

 

<2>rsort()降序排列

<3>asort()根据值升序排列

<4>ksort()根据键升序排列

<5>arsort()根据值降序排列

<6>krsort()根据键降序排列

10、超级全局变量

<1>$GLOBALS

用来引用全局变量

<2>$_SERVER

<?php   

echo $_SERVER[‘PHP_SELF’];//当前脚本的文件名  

echo “<br>”;  

echo $_SERVER[‘SERVER_NAME’];//主机名(域名)  

echo “<br>”;  

echo $_SERVER[‘HTTP_HOST’];//请求头中host的内容  

echo “<br>”;  

echo $_SERVER[‘HTTP_REFERER’];//引导用户代理到当前页的前一页的地址(该值不可信)  

echo “<br>”;  

echo $_SERVER[‘HTTP_USER_AGENT’];//  

echo “<br>”;  

echo $_SERVER[‘SCRIPT_NAME’];//包含当前脚本的路径  

?>  

<3>$_REQUEST

用于收集HTML表单提交的数据

<4>$_POST

收集表单数据

<5>$_GET

11、面向对象,成员函数调用(->)

<?php  

class Site {  

  /* 成员变量 */  

  var $url;  

  var $title;  

 

  function __construct( $par1$par2 ) {  

    $this->url = $par1;  

    $this->title = $par2;  

  }  

  /* 成员函数 */  

  function setUrl($par){  

     $this->url = $par;  

  }  

 

  function getUrl(){  

     echo $this->url . PHP_EOL;  

  }  

 

  function setTitle($par){  

     $this->title = $par;  

  }  

 

  function getTitle(){  

     echo $this->title . PHP_EOL;  

  }  

}  

 

$runoob = new Site(‘www.runoob.com’‘菜鸟教程’);  

$taobao = new Site(‘www.taobao.com’‘淘宝’);  

$google = new Site(‘www.google.com’‘Google 搜索’);  

 

// 调用成员函数,获取标题和URL  

$runoob->getTitle();  

$taobao->getTitle();  

$google->getTitle();  

 

$runoob->getUrl();  

$taobao->getUrl();  

$google->getUrl();  

?>  

 

12、代码的引用

include、require、use

include、require:相当于把代码包含进来,就是那个引用的文件把这一行代码代替了,这个要包含的文件 必须是<?PHP?>包含的,路径最好用正斜杠

include如果找不到会报一个警告然后继续执行,require则会报错误并且停止执行,如果是系统配置,缺少了不能允许,则我们应该用require

include_once、require_once:加了once之后,系统会判断,如果已经添加了,则不会添加第二次,但是系统做这个判断效率会降低,因此应该尽量靠系统架构使其不会重复加载,然后代码上面尽量不要用once影响效率

use:相当于Java的import

a.php

 

<?php   

    $a++;  

?>  

b.php

<?php  

    $a=5;  

    require_once“a.php”);  

    echo $a;//6  

    require_once“a.php”);  

    echo $a;//6,如果用了require则为7,因为他不管有没有加载过都会再次加载  

?>  

13、单引号与双引号

单引号不解释(直接输出),双引号会经过解释

未经允许不得转载:极客技术 » PHP入门学习之PHP基础语法

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址