PHP语言学习笔记

目录

一、PHP 文件是什么?

二、由于PHP可以在不同平台上运行、与几乎所有浏览器兼容、提供广泛的数据库、免费并且易于学习,在服务器上运行高效的优点,因此要使用PHP。

三、PHP基本语法

四、PHP定界符EOF(定义字符串)

五、数据类型

应用:

六、字符串变量

七、类型比较

八、运算符

九、if...else语句与switch语句同c语言一样,循环语句中while语句,do...while语句,for语句均与c语言用法一样。下面介绍独特的foreach语句(用于遍历数组):

十、数组

遍历关联数组:遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:

十一、数组排序

十二、超级全局变量(全部作用域均可作用)类型有:

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

 十三、函数(函数是通过调用函数来执行的)

十四、魔术常量

十五、PHP类定义

访问控制

十六、$_GET变量(预定义的 $_GET 变量用于收集来method="get" 的表单中的值)

 $_POST 变量(预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值)


一、PHP 文件是什么?

  • PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码
  • PHP代码在服务器上执行 ,结果以纯 HTML 形式返回给浏览器
  • PHP 文件的默认文件扩展名是 ".php"

通过 PHP:1.您不再限于输出 HTML。

2.您可以输出图像、PDF 文件,甚至 Flash 电影。您还可以输出任意的文本,比如 XHTML 和 XML。

3.收集表单数据,发送和接受cookiescookie其实就是一些数据信息,类型为“小型文本文件”,存储于电脑上的文本文件中。)

4.可以添加、删除、修改您的数据库中的数据,可对自己的网站或数据进行限制或加密,即可以加安全盾。

二、由于PHP可以在不同平台上运行、与几乎所有浏览器兼容、提供广泛的数据库、免费并且易于学习,在服务器上运行高效的优点,因此要使用PHP。

三、PHP基本语法

1.PHP脚本可从文档的任意位置开始,以<?php开始,以?>为结束,在中间写代码。(脚本中通常包含HTML标签)。

2.同c语言一般用分号将每个代码行分隔开,但输出可用echo,print(前者可输入多个字符串且速度快,后者只能输入一条字符串,返回值总是1)。

3.PHP上手快在于对于每个变量只需为$x(x为你要输入的变量名),在给变量第一次赋值时 便被创建,并不要明确变量类型以及声明变量(但同时变量名必须以字母或下划线字符开始,只能包含字母、数字以及下划线如A-z、0-9 和 _,不能包含空格)变量对大小写敏感。

4.print_r

打印关于变量的易于理解的信息,如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。 记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。

5.var_dump

此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

6.var_dump 和 print_r 的区别

var_dump 返回表达式的类型与值而 print_r 仅返回结果,相比调试代码使用 var_dump 更便于阅读。

4.PHP 有四种不同的变量作用域:

  • local(这是函数内部变量的作用域,只能在函数内部进行访问)
  • global(拥有全局作用域,只能在函数外才能访问,可在函数内部写global关键字来访问全局变量)
  • static(可以保存函数内部中你不想删除的变量,会保留前一次调用函数时该变量的值)
  • parameter(作为函数声明的一部分,存在于参数列表中)

总结:1、定义在函数外部的就是全局变量,它的作用域从定义处一直到文件结尾。

2、函数内定义的变量就是局部变量,它的作用域为函数定义范围内。

3、函数之间存在作用域互不影响。

4、函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组

5、在 php 中函数是有独立的作用域,所以局部变量会覆盖全局变量,即使局部变量中没有全局变量相同的变量,也会被覆盖。

四、PHP定界符EOF(定义字符串)

  • 1.PHP 定界符 EOF 的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;
  •  2.在 PHP 定界符 EOF 中的任何特殊字符都不需要转义(在其中也会解析html格式内容,加不加引号转义符均有效);
  •  3.PHP 定界符 EOF
<?php
$name="runoob";
$a= <<<EOF
        "abc"$name
        "123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>

"abc"runoob
  "123"     //此为运行结果。

五、数据类型

1.数据类型有String(字符串),Integer(整型),Float(浮点型),Boolean(布尔型),Array(数组),Object(对象),NULL(空值),Resource(资源类型)(看不懂...)

2. PHP var_dump() 函数返回变量和数组的数据类型和值,布尔型用于条件判断(true or false)。

3.NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值,NULL 值指明一个变量是否为空值。,同样可用于数据空值和NULL值的区别,可以通过设置变量值为 NULL 来清空变量数据。

4.对象数据类型也可以用于存储数据。在 PHP 中,对象必须声明。首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:

​
<?php
class Car
{
  var $color;
  function __construct($color="green") {
    $this->color = $color;
  }
  function what_color() {
    return $this->color;
  }
}
?>

​

以上实例中PHP关键字this就是指向当前对象实例的指针,不指向任何其他对象或类。

5.常量:常量是一个简单值的标识符。该值在脚本中不能改变。

一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

注意: 常量在整个脚本中都可以使用(帮扩函数内部)。

应用:

  • name:必选参数,常量名称,即标志符。
  • value:必选参数,常量的值。
  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
    <?php
    // 区分大小写的常量名
    define("GREETING", "欢迎访问 Runoob.com");
    echo GREETING;    // 输出 "欢迎访问 Runoob.com"
    echo '<br>';
    echo greeting;   // 输出 "greeting",但是有警告信息,表示该常量未定义
    ?>
    
    
    
    <?php
    // 不区分大小写的常量名
    define("GREETING", "欢迎访问 Runoob.com", true);
    echo greeting;  // 输出 "欢迎访问 Runoob.com"
    ?>
    
    
    

六、字符串变量

1.字符串变量用于包含有字符的值。在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。

在下面的实例中,我们创建一个名为 txt 的字符串变量,并赋值为 "Hello world!" 。然后我们输出 txt 变量的值:

<?php
$txt="Hello world!";
echo $txt;
?>

//当您赋一个文本值给变量时,请记得给文本值加上单引号或者双引号。

2.并置运算符 (.) 用于把两个字符串值连接起来。

<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>
//将输出:Hello world! What a nice day!
//在上面的代码中,我们已经使用了两次并置运算符。这是由于我们需要在两个字符串之间插入一个空格。

3.strlen()函数:返回字符串的长度(字节数)可用于结束字符串的结束标志。

strpos()函数:用于在字符串内查找一个字符或一段指定的文本。如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

<?php
echo strlen("Hello world!");
?>//将输出12

<?php
echo strpos("Hello world!","world");
?>//将输出6
//字符串 "world" 的位置是 6。之所以是 6 而不是 7 的原因是,字符串中第一个字符的位置是 0,而不是 1。

4.对字符串中的单词计数:str_word_count() 函数

<?php
echo str_word_count("Hello world!"); // 输出 2
?>

5.反转字符串:strrev() 函数

<?php
echo strrev("Hello world!"); // 输出 !dlrow olleH
?>

6.替换字符串中的文本:str_replace() 函数

<?php
echo str_replace("world", "Kitty", "Hello world!"); // 输出 Hello Kitty!
?>

七、类型比较

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。

八、运算符

1.PHP中算术运算符,赋值运算符,递增/递减运算符。都和c语言中的运算符规则匹配,不再赘述。

2.比较运算符:与c语言不同之处为x===y(绝对等于->如果 x 等于 y,且它们类型相同,则返回 true)。

x<>y(不等于),x!==y(不绝对等于->如果 x 不等于 y,或它们类型不相同,则返回 true)。

3.逻辑运算符:x and y等同于x &&y。x or y等同于x || y。x xor y(异或->如果 x 和 y 有且仅有一个为 true,则返回 true)。

4.数组运算符:

5.三元运算符("?:"): 语法格式为(expr1) ? (expr2) : (expr3)

对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

6.运算符优先级:&& > = > and、|| > = > or

运算符的优先级口诀:括(号)、单(操作数)、算(术)、移(位)、关(系);位(运算符)、逻(辑)、条(件)、赋(值)、逗(号)。

九、if...else语句与switch语句同c语言一样,循环语句中while语句,do...while语句,for语句均与c语言用法一样。下面介绍独特的foreach语句(用于遍历数组):

foreach ($array as $value)
{
    要执行代码;
}

每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。

<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{
    echo $value . PHP_EOL;
}
?>//分别输出
//Google
//Runoob
//Taobao
foreach ($array as $key => $value)
{
    要执行代码;
}

每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。

<?php
$x=array(1=>"Google", 2=>"Runoob", 3=>"Taobao");
foreach ($x as $key => $value)
{
    echo "key  为 " . $key . ",对应的 value 为 ". $value . PHP_EOL;
}
?>
/*key  为 1,对应的 value 为 Google
key  为 2,对应的 value 为 Runoob
key  为 3,对应的 value 为 Taobao*/

十、数组

array() 函数用于创建数组:类型有三种:

  • 数值数组 - 带有数字 ID 键的数组

自动分配 ID 键(ID 键总是从 0 开始):$cars=array("Volvo","BMW","Toyota");

用$cars[数字]来输出你想要的元素。

注意:count() 函数用于返回数组的长度(元素的数量)。可用于for循环。

  • 关联数组 - 带有指定的键的数组,每个键关联一个值

关联数组是使用您分配给数组的指定的键的数组。$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

用$cars['键值']来输出:$cars['Peter']得到35.

  • 多维数组 - 包含一个或多个数组的数组
  • 遍历关联数组:遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
 
foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>

十一、数组排序

  • sort() - 对数组进行升序排列(按数组中的元素按照字母升序排列)
  • rsort() - 对数组进行降序排列(同上)
  • asort() - 根据数组的值,对数组进行升序排列(根据数组的值)
  • arsort() - 根据数组的值,对数组进行降序排列
  • ksort() - 根据数组的键,对数组进行升序排列(如果是字母的话按字母的顺序排列)
  • krsort() - 根据数组的键,对数组进行降序排列

十二、超级全局变量(全部作用域均可作用)类型有:

$GLOBALS — 引用全局作用域中可用的全部变量

<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>

$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。 PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。

$_SERVER—保存关于报头、路径和脚本位置的信息

<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

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

PHP $POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$POST 也常用于传递变量。下面的例子展示了一个包含输入字段和提交按钮的表单。当用户点击提交按钮来提交数据后,表单数据会发送到标签的 action 属性中指定的文件。在本例中,我们指定文件本身来处理表单数据。如果您希望使用另一 个 PHP 页面来处理表单数据,请用更改为您选择的文件名。然后,我们可以使用超全局变量 $_POST 来 收集输入字段的值:

<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_POST['fname'];
echo $name;
?>
</body>
</html>

 $_GET—可用于收集提交 HTML 表单 (method="get") 之后的表单数据,也可以收集 URL 中的发送的数据

假设我们有一张页面含有带参数的超链接:

<html>
<body>
<a href="test_get.php?subject=PHP&web=W3school.com.cn">测试 $GET</a>
</body>
</html>

 当用户点击链接 "测试 $GET",参数 "subject" 和 "web" 被发送到 "test_get.php",然后您就能够通过 $_GET 在 "test_get.php" 中访问这些值了。 下面的例子是 "test_get.php" 中的代码:

<html>
<body>
<?php
echo "在 " . $_GET['web'] . " 学习 " . $_GET['subject'];
?>
</body>
</html>

 十三、函数(函数是通过调用函数来执行的)

1.PHP 函数准则:

  • 函数的名称应该提示出它的功能
  • 函数名称以字母或下划线开头(不能以数字开头)
<?php
function writeName()
{
    echo "Kai Jim Refsnes";
}
 
echo "My name is ";
writeName();
?>//输出My name is Kai Jim Refsnes

 2.添加参数

为了给函数添加更多的功能,我们可以添加参数,参数类似变量。

参数就在函数名称后面的一个括号内指定。

<?php
function writeName($fname)
{
    echo $fname . " Refsnes.<br>";
}
 
echo "My name is ";
writeName("Kai Jim");
echo "My sister's name is ";
writeName("Hege");
echo "My brother's name is ";
writeName("Stale");
?>
/*My name is Kai Jim Refsnes.
My sister's name is Hege Refsnes.
My brother's name is Stale Refsnes.*/

如需让函数返回一个值,请使用 return 语句。

<?php
function add($x,$y)
{
    $total=$x+$y;
    return $total;
}
 
echo "1 + 16 = " . add(1,16);
?>//输出1 + 16 = 17

十四、魔术常量

__LINE__(文件中的当前行号)应用形式为('._LINE_.'')

<?php
echo '这是第 " '  . __LINE__ . ' " 行';
?>//这是第二行

 __FILE__(文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。)应用形式为('_FINE_.')

 __DIR__(文件所在的目录,如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__).除非是根目录,否则目录中名不包括末尾的斜杠)

应用形式为('._DIR_.'')

__FUNCTION__(返回该函数被定义时的名字(区分大小写))应用形式为(._FUNCTION_)

__CLASS__(自 PHP 5 起本常量返回该类被定义时的名字(区分大小写),类名包括其被声明的作用区域(例如 Foo\Bar),注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字)应用形式为(._CLASS_.)

<?php
class test {
    function _print() {
        echo '类名为:'  . __CLASS__ . "<br>";
        echo  '函数名为:' . __FUNCTION__ ;
    }
}
$t = new test();
$t->_print();
?>
/*类名为:test
函数名为:_print*/

__TRAIT__(自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。Trait 名包括其被声明的作用区域(例如 Foo\Bar))

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

<?php
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}
 
trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}
 
class MyHelloWorld extends Base {
    use SayWorld;
}
 
$o = new MyHelloWorld();
$o->sayHello();
?>
//输出Hello World!

__METHOD__(返回该方法被定义时的名字(区分大小写))

应用形式为('._METHOD_)

__NAMESPACE__(当前命名空间的名称(区分大小写)) 

应用形式为(',_NAMESPACE_,')

十五、PHP类定义

  • 类使用 class 关键字后加上类名定义。

  • 类名后的一对大括号({})内可以定义变量和方法。

  • 类的变量使用 var 来声明, 变量也可以初始化值。

  • 函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。

    ​
    <?php
    class Site {
      /* 成员变量 */
      var $url;
      var $title;
      
      /* 成员函数 */
      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;
      }
    }
    ?>
    
    ​//PHP_EOL 为换行符

    类创建后,我们可以使用 new 运算符来实例化该类的对象,在实例化对象后,我们可以使用该对象调用成员方法,该对象的成员方法只能操作该对象的成员变量:

    ​
    ​
    ​
    <?php
    class Site {
      /* 成员变量 */
      var $url;
      var $title;
      
      /* 成员函数 */
      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;
    $taobao = new Site;
    $google = new Site;
    
    // 调用成员函数,设置标题和URL
    $runoob->setTitle( "菜鸟教程" );
    $taobao->setTitle( "淘宝" );
    $google->setTitle( "Google 搜索" );
    
    $runoob->setUrl( 'www.runoob.com' );
    $taobao->setUrl( 'www.taobao.com' );
    $google->setUrl( 'www.google.com' );
    
    // 调用成员函数,获取标题和URL
    $runoob->getTitle();
    $taobao->getTitle();
    $google->getTitle();
    
    $runoob->getUrl();
    $taobao->getUrl();
    $google->getUrl();
    ?>
    /*菜鸟教程
    淘宝
    Google 搜索
    www.runoob.com
    www.taobao.com
    www.google.com*/
    

    访问控制

    PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。

  • public(公有):公有的类成员可以在任何地方被访问。
  • protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。
  • private(私有):私有的类成员则只能被其定义所在的类访问。

十六、$_GET变量(预定义的 $_GET 变量用于收集来method="get" 的表单中的值)

从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。

何时使用 method="get"?

在 HTML 表单中使用 method="get" 时,所有的变量名和值都会显示在 URL 中。

注释:所以在发送密码或其他敏感信息时,不应该使用这个方法!

然而,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。

注释:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。

 $_POST 变量(预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值)

从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。

注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。

何时使用 method="post"?

从带有 POST 方法的表单发送的信息,对任何人都是不可见的,并且对发送信息的量也没有限制。

然而,由于变量不显示在 URL 中,所以无法把页面加入书签。

PHP $_REQUEST 变量

预定义的 $_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容。

$_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据。

十七、补充问题

include的用法:include 语句包含并运行指定文件。

1、include和require区别

当要包含的文件不存在时,include产生一个警告(Warning),该语句后面的程序会继续执行;而 require则导致一个致命错误(Fatal error),程序就此终止。

2.die()函数的用法:die() 函数输出一条消息,并退出当前脚本。

该函数是 exit() 函数的别名。

语法

die(status)
参数描述
status必需。规定在退出脚本之前写入的消息或状态号。状态号不会被写入输出。

说明

如果 status 是字符串,则该函数会在退出前输出字符串。

如果 status 是整数,这个值会被用作退出状态。退出状态的值在 0 至 254 之间。退出状态 255 由 PHP 保留,不会被使用。状态 0 用于成功地终止程序。

3.php中isset()函数的使用方法:isset()函数用于检测变量是否已设置并且非NULL,具体用法如:【isset($a)】。如果指定变量存在且不为NULL,则返回TRUE,否则返回FALSE。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值