php入门教程之常用数据类型和基本语法

 更新时间:2016年11月25日 15:00  点击:2102
php中数据类型有整型、小数型(浮动数)、布尔类型、字符及数组,变量,常量等下面我们一起来看看吧。

一 PHP常用数据类型

1.基本数据类型

1.1整型
1.2小数型(浮动数) 包含单精度和双精度
1.3布尔类型 (表示真,和 假)
1.4字符串

2.复合数据类型

2.1数组(array)
2.2对象 (object)

3.特殊数据类型

3.1null
3.2资源类型(resource)

二 PHP的基本语法

1.PHP 定义变量必需以 $ 这个符号开头,区分大小写。
2.变量的名称,应当以字母或者下划线开头,不要用数字开头,也不要用特殊字符开头。

第一个PHP程序

 代码如下 复制代码
<?php
echo "Hello World!";
?>

1 注释
1.1多行
/*
xxxx
*/
1.2单行
//xxxxx
2.赋值
$a = 'test';
2.1 检查变量是否已声明
isset($a)
2.2 释放变量
unset($a);
2.3 静态变量
static $a;
静态变量可在一个函数几次调用中保持数值,而不会被系统释放,但只能在声明它的函数集中访问到,只能在第一次声明时初始化。
3. 基本类型
3.1 数字类型
3.1.1整数(integer,关键字int)
.整数可用8进制 10进制 16进制 表示
$a=123; //10进制
$b=0123; //8进制
$c=0x123; //16进制
.由于操作系统不同整数精度变化很大,但32位是最常见的
3.1.2浮点(float,关键字float,64位浮点数,精度14位)
.PHP中float和double是等同的
.使用浮点数切记:他们只是近似值
如:2.5在内部常被表示为2.499999999
又如:
if(0.7+0.1>=0.8){
echo 'a';
}else{
echo 'b';
}
返回值为b,这取决于浮点数的确切实现方式,推荐做法是避免使用浮点值做比较
3.2 字符串
.用单引号或双引号包围
如:echo "Hello"; echo 'Hello';
.双引号中的变量会被解释,单引号中的则不会
如:var $name = 'jano';
echo "my name is $name.";//显示 my name is jano
echo 'my name is $name'; //显示 my name is $name
.双引号中的变量可用{}包围来区分变量和后面的字母
如:var $n = "my name is {$name}Yu";//如果没有{}就无法区分变量和字符
.heredoc
$a = <<< HTM
skjdfjsd
lksdfjsdlf
HTML; //后面的表示必须顶在最前面
.获取字符串中的某个字符
$a = 'Hello';
echo $a{1}; // 显示e
echo $a[1]; // 显示e
推荐使用第一种写法可以和数组区分开
3.3 布尔值
true false
4.常用函数
. nl2br 吧字符串中的换行符转化成<br />
如:echo nl2br($a);
.var_dump
显示变量类型和值,如:var_dump($a);
.print_r
var_dump加强版,打印对象类型和内容,数组则打出所有元素,类对象则打印所有成员
如:$a = array(1,2,3,4,5);
print_r($a);
5.数组
数组用array方法声明
例:
$a = array('a','b','c');
$a = array('a','b',array(1,2,3));
.默认从索引0开始赋值
如:$a[]='a'; //$a[0]='a';
$a[]='b'; //$a[1]='b';
.使用字符串值做索引
如:
$a = array('car'=>'Ferrari','Number'=>21,'City'=>'CQ');
echo $a['car'];
.遍历并更改数组元素值
foreach($array as $key=>&$value){// &$value
//...
}
6.特殊类型和值
.NULL 区分大小写,表示无值,从没赋值,用unset清除
.资源
7.强制类型转换
(int)$a
(float)$a
(string)$a
(bool)$a
(array)$a
(object)$a
.特殊的
(int)"0123";//返回123,没有把8进制0123转换为10进制数字
(int)"123 mu tou ren";//返回123
(int)"mu tou ren 123";//返回0,因为转换只从第一个字符开始读,发现非数字立即停止
.转换为布尔值
非空非零则为true(包括正数和负数),0为false
包含0个元素的数组为false
NULL为false
 
转换为整数
.浮点转换为整型
小数点后的数字舍弃,如果超过证书有效位,结果可能是0或者最小负数
.布尔转换为整型
true为1
false为0
.字符串转换为整型
对字符串左侧第一位进行判断。如果第一位是数字,则会从第一位开始将读取到数字转换成整数。如果第一位不是数字结果为0.
.PHP没有提供其他类型转换为整数的方法
 
转换为浮点数
.整数转换为浮点数
结果不变
.布尔转换为浮点数
true为1
false为0
.字符串转换成浮点数
与整数类似
.PHP没有提供其他类型转换为浮点数的方法
 
转换为字符串
将非字符串转换为字符串的方法是在变量前使用“(string)”强制转换。
规则如下:
1.整型或浮点型:结果为其值
2.布尔型:true转换为'1' , false转换为空字符串
3.对象或数组:如果被转换的变量是对象或数组,则转换结果将为字符串对象或字符串数组,需要根据实际情况进行分析。
4.资源类型:返回资源标识号
8.类型判断与获取
 
.转换成数组
在变量前用“(array)”强制转换。将变量转换成员变量数据类型相同的数组,数组中只有一个元素。
如:
$a=1;
print_r((array)$a);
结果:
Array
(
    [0]=> 1
)
 
.转换为对象
在变量前用“(object)”强制转换。将生成一个新对象,其中名为scalar的成员变量将包含原变量的值。如:
$a=1;
$o = (object)$a;
echo $o->scalar;
 
使用函数进行数据转换
bool settype(var, string type)
 
type值: boolean,integer,float,string,array,object,null
 
.判断类型函数
is_integer 如:is_integer($a); //返回true或false
is_float
is_double
is_real
is_int
is_long
is_numeric
is_string
is_bool
is_array
is_object
is_null
is_resource
is_scalar  是否为一个标量
.类型获取
gettype($a);
9.变量和常量
.常量
define('NUM_USR','0');
$u = NUM_USR;
.引用
$a=0;
$b = &$a;
$b++;
echo $a;//显示1,因为$b是$a的引用,$b改变就表示$a改变
10.操作符
10.1 数学操作符
+ - * / %(取余)
10.2 比较运算符
==
=== 值相同,类型相同
!=
<> 和!=一样都是不等于
!== 值相同,类型不同
<
>
<=
>=
10.3 逻辑运算符
and && 与
or || 或
xor 异或,若一个为true,但不是两个都为true,则结果为true
! 非
10.4 按位操作
& 按位与
| 按位或
^ 按位异或
~ 按位非
<< 左移位
>> 右移位
10.5 三元操作符
表示问号前面的表达式是否为true,是则返回冒号前面的值,不是则返回冒号后面的值
如:
$c = $a > $b ? 1:2;
echo $a>$b ? "hello":"no";
.下面两个语句是等价的
$a = ($b != 'china') ? true : false;
$a = $b != 'china';
10.6 其他操作符
++ 自增
-- 自减
@ 忽略特定函数的调用失败报错,如:$u=@file(xxx);
. 字符串连接操作,如:$a = 'hello'.'world'; $a = 'hello'.$a;
11.7 特殊的逻辑运算符表达式
$a = 0;
$b = 100;
echo $a || $b;//$a转换为bool值为true时,echo $a,否则echo $b,不管$b表达式是否为true,此表达式会始终显示100
echo $a && $b;//将什么都不显示,因为整个表达式$a && $b返回false
$a = 1;
$b = 0;
echo $a && $b;//将什么都不显示,因为整个表达式$a && $b返回false
echo $a && $b;//始终显示$a
$a = 1;
$b = 0;
$a && $b=12;
echo $b;//显示12,$a是否为true,为true就会执行$b=12,系统首先读取&&,知道这是个与,于是开始执行&&前面的语句,发现返回true就再 执行&&后面的语句,发现返回false就不会再执行&&后面的语句了,因为&&逻辑,只要有一个false 整个表达式就变成false

在学习中写到的一个PHP Class类与对象学习笔记,下面与各位朋友分享,希望此教程对各位学习类与对象有所帮助。

个人做的笔记.....用于借鉴,如有错请指出,谢谢

 代码如下 复制代码

<?php
/*******************************************

   Class 对象实例说明( 普通类 )

*******************************************/
 class ClassDemo{
  public $PublicVar;
 
  private $PrivateVar;//私有变量 外部不能调用
 
  protected $ProtectedVar;//受保护变量 外部与子类不可访问
 
  public static $StaticVar=0;//static 静态变量 静态方法 不能访问非静态方法与变量,非静态方法与变量可以访问静太方法与变量
 
  const constVar='';//当你有一个属性,不希望被修改,则考虑使用const 做成常量,使用 类名::常量名; 接口名::常量
  /*
    1.常量在定义的时候需要赋初值
    2.常量不能修改.
    3.常量名不能有 $, 一般是大写, 默认是public
    4.常量在类的内部使用 self::常量的名称 类名::常量的名称
  */
  public function __construct( /*$name*/ ){//这个可以带参数,带了参数之后必创建时必须也带有参数,不然会出错
   //$this->PublicVar=$name;
   //self::$StaticVar++;//静态变量内部访问方法  外部访问方法 对象名::变量名( ClassDemo::$StaticVar )
   $this->PublicVar='$PublicVar';
   $this->PrivateVar='$PrivateVar';
   $this->ProtectedVar='$ProtectedVar';
   self::$StaticVar++;
   echo "ClassDemo __construct<br />";
   }
  
  public function __destruct(){//析构函数
   }
  final public function fun(){
   /*
    final 关键字( PHP5 中出现 )
    希望方法不被其它的类继承时间覆盖, 可以使用final
   
    当这个关键字用来修饰类的时候,那么这个类将不可被其它类给继承(可以实例化)
   
    注:此关键字不能用于修饰变量

   */
   }
  }//End Class
/*******************************************

   Class 对象实例说明( 抽象类 )

*******************************************/
 abstract class AbstractDemo{
  /***************************************
 
   1.抽象类不能被实例化
  
   2.抽象类不一定要包含abstract方法。
     也就是说抽象类可以没有abstract方法
    
   3.一旦包含了abstract方法,则这个类必须
     声明为abstract
  
   4.抽象类不能有函数体
  
   5.如果一个类继续了某个抽象类,则他必须实现
     该抽象类的所有抽象方法。(除非它自己也声明为抽象类)
    
  ***************************************/
  }

/*******************************************

   Class 对象实例说明( 继承类 )

*******************************************/
 class DemoTwo extends ClassDemo{
 
  }
/*******************************************

   Class 对象实例说明( 接口 )

*******************************************/
 interface Face{
  /*********************************
  1.当一个类实现了 某个接口,则要求该类必须实现这个接口的所有方法
  2.接口的方法都不能有方法体
  3.不能去实例化一个接口
  4.接口中可以有属性,但是必须是常量,并且是public

  什么情况下使用接口
 
   1.定规范
   2.定下规范,让别的程序员来实现,比如:

  **********************************/
  public function Name();
 
  }
 
 interface Face2 extends Face{
  /*******************************
 
   继承接口
   继承接口时候不用去实现父接口的方法
 
  ********************************/
 
  const namevar=20;
 
  }
 
 class Demo implements Face2{
  /**********************************
 
   实现接口,可以同时实现多个接口
   当一个类去实现了某些接口,则必须把所有接口的方法,都实现
  
  **********************************/
 
  public $Name1=0;
 
  public function Name(){
  
   echo Face2::namevar;
  
   }
 
  }

?>

小结

在类内部访问静态成员属性或者方法,使用 self::(注意不是 $slef),如:

 代码如下 复制代码

slef:: $country
slef:: myCountry()

在子类访问父类静态成员属性或方法,使用 parent::(注意不是 $parent),如:

 代码如下 复制代码

parent:: $country
parent:: myCountry()

外部访问静态成员属性和方法为 类名/子类名:: ,如:

 代码如下 复制代码

Person::$country
Person::myCountry()
Student::$country

但静态方法也可以通过普通对象的方式访问。


•类/对象 函数

•__autoload — 尝试加载未定义的类
•call_user_method_array — 调用一个用户方法,同时传递参数数组(已废弃)
•call_user_method — 对特定对象调用用户方法(已废弃)
•class_alias — 为一个类创建别名
•class_exists — 检查类是否已定义
•get_called_class — 后期静态绑定("Late Static Binding")类的名称
•get_class_methods — 返回由类的方法名组成的数组
•get_class_vars — 返回由类的默认属性组成的数组
•get_class — 返回对象的类名
•get_declared_classes — 返回由已定义类的名字所组成的数组
•get_declared_interfaces — 返回一个数组包含所有已声明的接口
•get_declared_traits — 返回所有已定义的 traits 的数组
•get_object_vars — 返回由对象属性组成的关联数组
•get_parent_class — 返回对象或类的父类名
•interface_exists — 检查接口是否已被定义
•is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE
•is_subclass_of — 如果此对象是该类的子类,则返回 TRUE
•method_exists — 检查类的方法是否存在
•property_exists — 检查对象或类是否具有该属性
•trait_exists — 检查指定的 trait 是否存在

一篇入门级别的PHP基本语法和数据类型文章,希望对各位php初学者能提供一些帮助哦。

PHP基本语法和数据类型:

(1)、PHP基本语法:

               1、htm 和 php 混编
               2、一个语句以  ; (分号结束)
               3、如何定义一个变量,和变量的使用

(2)、PHP数据运算类型

      四种标量类型:
                       boolean(布尔型) 理解为真假型
                       integer(整型)
                       float(浮点型,也作“double”) 理解为小数型
                       string(字符串)

      两种复合类型:
                     array(数组)
                     object(对象)

(3)PHP五种运算类型

1、算术运算

2、赋值运算(如:$a=100)

3、比较运算(如:$a<$b)

4、逻辑运算(如:$a&&$b)

5、递增凝递减运算(如:$a++)

(4)switch条件语句

switch条件语句

<?php

$i=1;

switch($i){
     case 0;
         echo “i的值为0″;
         break;
     case 1;
         echo “i的值为1″;
         break;
     case 2;
         echo “i的值为2″;
         break;
    default: echo “以上的几个值都不是”;

}

?>

break n 跳出循环语句

break n跳出n层循环

例:

<?php
for($i=1;$i<=5;$i++){
      echo “i=”.$i.”<br>”;
      for($j=1;$j<=5;$j++){
         echo “&nbsp;&nbsp;j=”.$j.”<br>”;
            for($k=1;$k<=5;$k++){
               echo “&nbsp;&nbsp;&nbsp;&nbsp;k=”.$k.”<br>”;
      if($k==2){
        break;
      }
            }
   if($j==3){
       break 2;
   }

      }
   echo “<br>”;
}
?>

(5)do while循环

<?php

//先执行一次再判断
do{
    echo “执行循环”;
 $a++;
}while($a>100);//注意这里有一个分号
echo “<br>”;

//先判断再执行
while($a>100){
    echo “执行循环”;
 $a++;
}
?>

PHP数组常用到的函数

foreach($arr as $key=>$val){}//遍历数组

count($arr)//统计数组的长度

is_array($arr)//判断数组

explode(“key”,$str)//分割字符串成数组

在php中获取url地址我们有很多函数可以使用,主要是全局变量server为我提供了不少方法,下面我们一起来看看吧。

常用函数

 代码如下 复制代码


//获取域名或主机地址
echo $_SERVER['HTTP_HOST']."<br>"; #localhost

//获取网页地址
echo $_SERVER['PHP_SELF']."<br>"; #/blog/testurl.php

//获取网址参数
echo $_SERVER["QUERY_STRING"]."<br>"; #id=5

//获取用户代理
echo $_SERVER['HTTP_REFERER']."<br>";

//获取完整的url
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
#http://localhost/blog/testurl.php?id=5

//包含端口号的完整url
echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
#http://www.111cn.net /blog/testurl.php?id=5

//只取路径
$url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
echo dirname($url);
#http://localhost/blog

看个例子,可以获取完整url

 代码如下 复制代码

<?php
// 说明:获取完整url

function curpageurl()
{
    $pageurl = 'http';

    if ($_server["https"] == "on")
    {
        $pageurl .= "s";
    }
    $pageurl .= "://";

    if ($_server["server_port"] != "80")
    {
        $pageurl .= $_server["server_name"] . ":" . $_server["server_port"] . $_server["request_uri"];
    }
    else
    {
        $pageurl .= $_server["server_name"] . $_server["request_uri"];
    }
    return $pageurl;
}
?>

break是被用在上面所提的各种循环和switch语句中的。他的作用是跳出当前的语法结构,执行下面的语句。break语句可以带一个参数n,表示跳出循环的层数,如果要跳出多重循环的话,可以用n来表示跳出的层数,如果不带参数默认是跳出本重循环。

 代码如下 复制代码

$array = array(1,2,3,4,5,6);
for($i=0;$i<10;$i++){
foreach($array as $key)
{
  echo $key;
  if($key==2){

    break 2;
  }
}
}

 代码如下 复制代码

    <?php
    //设置编码为UTF-8,以避免中文乱码
    header('Content-Type:text/html;charset=utf-8');

    //执行嵌套循环,外层循环3次,内层循环2次。当执行到第2次外层循环时,使用break跳出,不执行其内层循环。
    for ($i = 0; $i < 3; $i++){
        echo '外层循环'.$i.' 开始<br/>';
        for ($j = 0; $j < 2; $j++){
            if ($i == 1){
                break;
            }
            echo '内层循环'.$i.'-'.$j.'<br/>';
        }
        echo '外层循环'.$i.' 结束<br/><br/>';
    }
    ?>

上述代码的输出页面结果如下:

外层循环0 开始
内层循环0-0
内层循环0-1
外层循环0 结束

外层循环1 开始
外层循环1 结束

外层循环2 开始
内层循环2-0
内层循环2-1
外层循环2 结束

上面的代码很容易理解,break用于跳出当前层次的循环。不过,与Java等编程语言不同的是,在PHP中,我们还可以在关键字break后跟上一个数字,该数字表示需要跳出的循环层数,这样可以使用一个break语句,直接跳出多重循环。例如:

 代码如下 复制代码

    <?php
    //设置编码为UTF-8,以避免中文乱码
    header('Content-Type:text/html;charset=utf-8');

    //执行嵌套循环,外层循环3次,内层循环2次。当执行到第2次外层循环时,使用break 2跳出,直接跳出2层循环
    for ($i = 0; $i < 3; $i++){
        echo '外层循环'.$i.' 开始<br/>';
        for ($j = 0; $j < 2; $j++){
            if ($i == 1){
                break 2;    //使用break 2直接跳出2层循环       
            }
            echo '内层循环'.$i.'-'.$j.'<br/>';
        }
        echo '外层循环'.$i.' 结束<br/><br/>';
    }
    ?>

上述示例代码输出的页面结果如下:

外层循环0 开始
内层循环0-0
内层循环0-1
外层循环0 结束

外层循环1 开始

因此,在PHP中,我们可以使用break后跟上指定的数字,来直接跳出指定层数的循环。
注意:break后跟的数字,只能为正整数,并且不能超过实际可以跳出的循环层数。否则会报致命错误(Fatal Error)。

[!--infotagslink--]

相关文章

  • php中浮点型(float)和整型(integer)数据类型详解

    文章分析了关于php中浮点型(float)和整型(integer)数据类型的用法区别以及在那种情况下会出现数据长度不够。 取值只能为True或者False,当其他类型转化为boolean类...2016-11-25
  • c# 数据类型占用的字节数介绍

    本篇文章主要是对c#中数据类型占用的字节数进行了详细的介绍。需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25
  • Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • Javascript中的数据类型之旅

    虽然Javascript是弱类型语言,但是,它也有自己的几种数据类型,分别是:Number、String、Boolean、Object、Udefined、Null。其中,Object属于复杂数据类型,Object 由无序的键值对组成。其余几种都属于简单数据类型。注意:变量...2015-10-21
  • JavaScript实现数据类型的相互转换

    这篇文章主要为大家详细介绍了JavaScript实现数据类型的相互转换,感兴趣的朋友可以参考一下...2016-03-09
  • C#的四种基本数据类型

    本文主要介绍了C#的四种基本数据类型的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • 基于PostgreSQL和mysql数据类型对比兼容

    这篇文章主要介绍了基于PostgreSQL和mysql数据类型对比兼容,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-25
  • C#线程入门教程之单线程介绍

    这篇文章主要介绍了C#线程入门教程之单线程介绍,本文讲解了什么是进程、什么是线程、什么是多线程等内容,并给出了一个单线程代码示例,需要的朋友可以参考下...2020-06-25
  • toString.call()通用的判断数据类型方法示例

    这篇文章主要给大家介绍了关于toString.call()通用的判断数据类型方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-29
  • C#数据类型及其转换详解

    这篇文章主要介绍了C#数据类型及其转换详解,在C#中,数据类型可以分为几种类型,今天小编通过本文给大家详细介绍,需要的朋友可以参考下...2020-07-10
  • CocosCreator入门教程之用TS制作第一个游戏

    这篇文章主要介绍了CocosCreator入门教程之用TS制作第一个游戏,对TypeScript感兴趣的同学,一定要看一下...2021-04-16
  • 详解JavaScript语言的基本语法要求

    JavaScript语言的基本语法要求有哪些呐?下面将为大家一一解答: 一、区分大小写 JavaScript语言区分字符大小写,两个字符串相同大小写不同,被认为是不同的字符串。JavaScript语言的关键字也区分大小写,按语法要求应...2015-11-24
  • javascript数据类型验证方法

    这篇文章主要为大家分享了一个简单的javascript数据类型验证方法,感兴趣的小伙伴们可以参考一下...2016-01-05
  • php入门教程(类实例教程)

    这里主要讲到关于在php教程类的调用,申请明,使用以前各种类的实例方法与操作过程,让你清楚的知道php类的construct destruct clone call wake sleep用法。 简单购物车...2016-11-25
  • C#中的不可变数据类型介绍(不可变对象、不可变集合)

    这篇文章主要介绍了C#中的不可变数据类型介绍(不可变对象、不可变集合),本文讲解了不可变对象、自定义不可变集合、Net提供的不可变集合、不可变优点、不可变对象缺点等内容,需要的朋友可以参考下...2020-06-25
  • JavaScript数据类型学习笔记

    这篇文章主要针对JavaScript数据类型整理的学习笔记,分享给大家,感兴趣的小伙伴们可以参考一下...2016-01-26
  • php入门教程,?号表达式

    下面举一个很简单的?表达式的实现吧,其实它就是简单的if else哦。 <? $a = 5; //定义变数a=5 $b = 3; //定义变数b=5 $c = ($a==$b) ? ("yes") : ("no"); //如果...2016-11-25
  • JS数据类型判断的几种常用方法

    这篇文章主要介绍了JS判断数据类型的几种常用方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-08
  • JS中数据类型的正确判断方法实例

    怎么去判断一个数据属于哪个数据类型,这个是很常见的操作,我们一般都会想到typeof和instanceof这两个常见的方法,但有时候这两种方法并不能满足我们的需求,下面这篇文章主要给大家介绍了关于JS中数据类型的正确判断方法,需要的朋友可以参考下...2021-08-26
  • 深入了解mysql的4种常用、重要的数据类型

    为了实现这一目标,它需要我们在数据库系统的常用数据类型有充分的认识。下面我们来看一下mysql的重要数据类型1、数值类型可以划分为数值类型:整型,浮点十进制类型。所谓的“十进制”是指decimal和numeric,他们是同一类型...2014-05-31