php基础学习与配置(二), 了解多少

本文详细介绍了PHP的基础知识,包括类型比较、字符串操作、数组使用、命名空间、面向对象特性以及数据库连接。通过示例代码展示了如何进行类型判断、字符串连接、数组排序以及PHP的魔术常量和预定义变量的运用。此外,还提到了表单处理和下拉菜单的创建,是初学者学习PHP的实用教程。
摘要由CSDN通过智能技术生成

1.php的类型

" 与 "=”
"" 为松散比较,"=“为严格比较,”==="除比较值外,也比较类型

<?php echo '2==true: '; var_dump(2==true); echo '3==false: '; var_dump(3==false); ?>

运行它后结果为 2 == false: bool(true) 3 === false: bool(false)
php有一些常量,有8个魔术常量,它们的值随位置的改变而不一样
例举几个较为重要的常量:FILELINEFUNCTIONMETHODNAMESPACE

  1. FILE ,php4.0.2开始,它会包含一个绝对路径,而之前的有时会有相对路径
    <?php
    echo ‘文件在" ’ . FILE . ’ "’;
    ?php>
    运行它后结果为 文件在" C:\Users\a.php ";

  2. LINE , 文件中的行号
    <?php
    echo ‘这在第"’ . LINE . ‘"行’;
    ?php>
    运行它后结果为 这在第" 3 "行

  3. FUNCTION , php5开始返回该函数定义的名字,有分大小写,php4的值为小写的

  4. METHOD ,类的方法,php5开始返回它的名字, 有分大小写

  5. NAMESPACE ,php5.3开始在命名空间的名字, 有分大小写, 它在编译时定义.

2.php字符串

php字符串 并置运算符 (.) 用于两个字符串值的连接

<?php $text1=" Good "; $text2=" morning "; echo $text1 . " " . $text2; ?> 

运行它后结果为 Good morning

strlen() 返回字符串长度, 返回的按字符数量来算

  1. <?php echo strlen("hello"); ?>
    运行它后结果为 5
  2. 中文字符一个占3个字符数,gbk的字符占2个,用mb_strlen设置指定输出字符的个数
    <?php echo mb_strlen("你好",'utf-8'); ?php>
    运行它后结果为 2

strops()在字符串查找一字符或文本,未找到便返回false 1.<?php echo strops(" hello ","o"); ?>
运行它后结果为 5
2.<?php echo strops("你好"); ?>
3.可用mb_strops查询中文字符位置, PHP_EOL的语法为换行
<?php echo strops('hello 你好','你好') . PHP_EOL; echo mb_strops('hello 你好','你好') ?>
运行它后结果为 5 6
php运算符有多个,例如
x + y 为x和y的和
-x 为x取反
x % y 为x除以y的余数,也是它的模

3.php的数组

php有三种类型
数组 数值, 关联(带有指定键的数组),多维(包含一个或多个数组)
数值数组有 1.自动分配id键
$a=array(“1”,“2”);
2.人工分配id键
$a[0]=“1”; $a[0]=“2”;
数组排序 sort(), 对数组升序排序 rsort(),
对数组降序排序 asort()
根据关联数组的值进行升序排序
sort排序

<?php $a=array("1","2"); sort($a); print_r($a); ?> 

运行它后结果为 Array ( [0] => 1 [1] => 2 )
rsort排序

<?php $a=array("1","2"); sort($a); print_r($a); ?> 

运行它后结果为 Array ( [0] => 2 [1] => 1 )
asort排序

<?php $a=array("1","2"); sort($a); print_r($a); ?> 

运行它后结果为 Array ( [0] => 2 [1] => 1 )

php全局变量,可在函数,类中使用 $GLOBALS 是一个包含全部变量的全局变量,变量名是数组的键 $_SERVER 是一个包含头信息,路径,脚本位置等信息的数组 $_POST 用于收集表单信息 php函数

<?php 
   function num($fnumber){ 
  echo $fnumber . " a1.<br> "; } 
  echo ("the num is"); num("a1 a2"); 
  echo ("the num is"); num("a1 a3"); 
  ?> 

运行它后结果为 the num is a1 a2 the num is a1 a3
php返回值

 <?php function add($a,$b){ $c=$a+$b; return $c; } 
 echo "1+2= " . add(1,2); ?> 

运行它后结果为 1+2= 3

4.php命名空间

使用户编写的与php的类或函数的名字不冲突,也为标识符创建的一个别名. 一个命名的用大括号的比较好,少在程序的段落用多个命名空间.
命名空间有分为几个:非限定的,不包含前缀的名称 限定的,包含前缀的名称
完全限定的,包含全局前缀操作符的名称

5.php面向对象

面向对象有封装: 物体的属性和行为绑定,并放置在一个逻辑单元, 继承: 一个类继承另一个类,
多态: 相同的函数或方法作用于多种类型的对象,并获得不同的结果等等
构造函数: 创建初始化对象,与new字符用来创建对象的语句. 析构函数: 当对象结束生命周期时自动执行析构函数, 例如程序退出前用delete. 成员方法

<?php $a->setName("1"); $b->setName("2"); //调用成员函数,获取名称 
$a->getName("1"); $b->getName("2"); 
?> 

构造函数

<?php $a=new Site('1'); $b=new Site('2'); //调用成员函数,获取名称 
     $a->getName(); $b->getName(); ?>

调用父类构造方法,php不会自动调用父类的构造方法,需在子类构造方法中调用parent::方法名

class a{ function b(){ 
         print "a1" . PHP_EOL; 
     } } 
     class c { 
        function b extends a(){ 
           function b(){ 
              parent::b(); 
              print "a2"; 
          } 
       } 
    运行它后结果为 a1 a2 
    析构函数 
    <?php class a1{ 
      function a2(){ 
          print "\n"; 
          this->name="a1"; 
      } 
      function b1(){ 
         print "destroy" . $this->name . "\n";
          }
     }
   $obj=new a1();      
  ?> 

php使用extends继承,不过它不支持多继承 方法重写,为方法覆盖 继承父类的方法可改写

<?php
   class a1{
   function getName(){
      echo $this->name . PHP_EOL;
      return $this->name;
   }
  ?> 

类属性若用var定义则为公有, 类可实现多个接口,用逗号分隔多个接口的名称

6.php的数据库连接

php用mysqli或pdo连接数据库,mysqli的面向对象,pdo的面向过程 mysqli的可通过http://php.net/manual/en/mysqli.installation.php安装,pdo也可通过有关网页下载

<?php $servername="localhost"; 
$username="username"; $password="password"; 
$connect=new mysqli($servername,$username,$password); 
if($connect->connect_error){ 
  die("连接错误: " . $connect->connect _error); 
} 
echo "连接成功"; 
?> 

5.2.9之前的可用此语句

if(mysqli_connect_error()){ 
   die("连接错误: " . mysqli_connect_error()); } //关闭mysql 
   $connect->close(); //数据库创建 
   $sql="CREATE DATABASE book"; 
   if($connect->query($sql)===TRUE){ 
     echo "数据库成功"; 
   }else{ echo "错误" . $connect->error; 
   } //插入数据 
   $sql="INSERT INTO book2(name,id,password)        VALUES('a','1','admin1')"; 
   if($connect->query($sql)===TRUE){ 
     echo "数据库成功"; 
   }else{ 
      echo "错误" . $sql . "<br>" . $connect->error; 
   } 

查询多条语句需在if语句后添加一句: $connect->multi_query($sql)===TRUE

php数据库连接
pdo的语句不可在等号两边有空格,需要一字符, 若有空格,或许会报错. php 预处理语句减少语句查询时间,参数值使用不同协议,对SQL注入有用.

//预处理语句和绑定 
$stma1=$connect->prepare("INSERT INTO book1(name,id,password)");values(?,?,?)"); 
$stma1->bind_param("a","$name","$id","$password"); //设置参数   
$name="a1";
$id="1"; 
$password="admin1"; 
$stma1->excute(); //输出信息 
$sql="SELECT name, id, password FROM book"; $res=$connect->query($sql); 
if($res->num_rows>0){ 
while($row=$res->fetch_assoc()){ 
echo "id: " . $row["name"]. " - Name: " . $row["id"]. " " . $row["password"]. "<br>"; 
} 
} else { 
echo "查询错误"; 
} 

7.php表单处理

<html> 
<head> 
<meta charset="utf-8"> 
<title>hello</title> 
</head> 
<body> <form action="a1.php" method="post"> 名字:
<input type=".text" name="fname"> id: 
<input type=".text" name="fid"> 
<input type="submit" value="提交"> 
</body> </html> a1.php hello
<?php echo $_POST["fname"]; 
?><br> 
<?php echo $_POST["id"]; 
?> 

8.php下拉菜单

<?php $q=isset($_GET['q'])? htmlspecialchars($_GET['q']):''; if($q){ if($q=='a1'){ echo 'a1'; 
}else if($q=='a2'){ 
echo 'a2';
}else if($q=='a2'){ 
echo 'a2'; } 
}else{ 
?> 
<form action="" method="get"> 
<select name="q"> 
<option value="">选择一个站点</option> 
<option value="a1">a1</option> 
<option value="a2">a2</option> 
</select> <input type="submit" value="提交"> 
</form> <?php } 
?> 

$_GET变量接受以get方式发送的请求,
$_POST变量接受以post方式发送的请求, $_REQUEST支持两种方式请求,get显示在url(有字符数限制),post不会在url显示,可传递较多数据 php表单验证 $_SERVER[“aPHP_SELF”] 可发送数据到当前页面,而不是跳转到不同页 htmlspecialchars()函数将一些预定义的字符转换为HTML,若输入特殊符号,用它可避免表单的问题.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值