微信扫一扫

028-83195727 , 15928970361
business@forhy.com

php进阶篇

php进阶篇2016-11-02

数组


PHP数组之索引数组初始化

PHP有两种数组:索引数组、关联数组。

索引和关联两个词都是针对数组的键而言的。

先介绍下索引数组,索引数组是指数组的键是整数的数组,并且键的整数顺序是从0开始,依次类推。

下面使用图来说明一下:

可以使用下面代码实现:

$fruit = array("苹果","香蕉","菠萝"); 注意数组的键是从0开始的。可以使用print_r($fruit);语句输出数组键及对应的值。

<?php
//创建一个索引数组,索引数组的键是“0”,值是“苹果”
$fruit = array("苹果",'香蕉','菠萝');
echo '<pre>';
print_r( $fruit );
echo '</pre>';
?>

输出
<pre>Array
(
    [0] => 苹果
    [1] => 香蕉
    [2] => 菠萝
)


PHP数组之索引数组赋值

索引数组赋值有三种方式:

第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,索引数组中,中括号内的键一定是整数。比如,$arr[0]='苹果';

第二种:用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。当然,索引数组中,键一定是整数。比如,array('0'=>'苹果');

第三种:用array()创建一个空数组,直接在数组里用英文的单引号'或者英文的双引号"赋值,数组会默认建立从0开始的整数的键。比如array('苹果');这个数组相当于array('0'=>'苹果');

<?php
$arr=array('0'=>'苹果','1'=>'西瓜');
$arr1 = array("苹果",'香蕉','菠萝');
$arr2=array();
$arr2[0]="苹果";
$arr2[1]="香蕉";
$arr2[2]="菠萝";
print_r($arr);
echo '<pre>';
print_r( $arr1 );
echo '</pre>';
echo '<pre>';
print_r( $arr2 );
echo '</pre>';
?>
//////

(
    [0] => 苹果
    [1] => 香蕉
    [2] => 菠萝
)
Array
(
    [0] => 苹果
    [1] => 香蕉
    [2] => 菠萝
)


PHP数组之访问索引数组内容

有的时候我们需要把数组中的内容也就是值取出来该怎么办呢?用数组变量的名字后跟的中括号中的键,来访问数组中的值。

<?php
//从数组变量$arr中,读取键为0的值
$arr = array('苹果','香蕉');
$arr0 = $arr['0'];
if( isset($arr0) ) {print_r($arr0);}
?>
//////
<pre>苹果
isset()在php中用来检测变量是否设置,该函数返回的是否布尔值,即true/false。


PHP数组之for循环访问索引数组里的值

for循环可以将数组里的所有值都访问到,用for循环访问索引数组里的值。
<?php
$fruit=array('苹果','香蕉','菠萝');
for($index=0; $index<3; $index++){
    echo '数组第'.$index.'值是:'.$fruit[$index]."<br/>";
}
?>
//////
数组第0值是:苹果
数组第1值是:香蕉
数组第2值是:菠萝

PHP数组之foreach循环访问索引数组里的值

foreach循环可以将数组里的所有值都访问到,用foreach循环访问索引数组里的值。
<?php
	$fruit=array('苹果','香蕉','菠萝');
	foreach($fruit as $key=>$value){
	    echo '第'.$key.'值是:'.$value.'<br/>';
	}
	foreach($fruit as $value){
	    echo $value.'<br/>';
	}
?>
//////
第0值是:苹果
第1值是:香蕉
第2值是:菠萝
苹果
香蕉
菠萝

PHP数组之关联数组初始化

PHP有两种数组:索引数组、关联数组。

索引和关联两个词都是针对数组的键而言的。

先介绍下,关联数组是指数组的键是字符串的数组。

<?php
    $fruit = array(
        'apple'=>"苹果",
        'banana'=>"香蕉",
        'pineapple'=>"菠萝"
    ); 
    print_r($fruit)
?>
//////
Array ( [apple] => 苹果 [banana] => 香蕉 [pineapple] => 菠萝 )

PHP数组之关联数组赋值

关联数组赋值有两种方式:

第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,关联数组中,中括号内的键一定是字符串。比如,$arr['apple']='苹果';

第二种:用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。当然,关联数组中,键一定是字符串。比如,array('apple'=>'苹果');

<?php
	$arr = array('apple'=>'苹果','pineapple'=>'菠萝');
	if( isset($arr)){
		print_r($arr);
	}
?>
//////
Array ( [apple] => 苹果 [pineapple] => 菠萝 )

PHP数组之访问关联数组内容

用数组变量的名字后跟中括号+键的方式来访问数组中的值,键使用单引号或者双引号括起来。

<?php
	$fruit = array('apple'=>"苹果",'banana'=>"香蕉",'pineapple'=>"菠萝"); 
	$fruit0 = $fruit['banana'];
	print_r($fruit0);
?>
//////
香蕉

PHP数组之foreach循环访问关联数组里的值

foreach循环可以将数组里的所有值都访问到,用foreach循环访问关联数组里的值。

<?php
	$fruit=array('apple'=>"苹果",'banana'=>"香蕉",'pineapple'=>"菠萝");
	foreach($fruit as $k=>$v){
	    echo '水果的英文键名:'.$k.',对应的值是:'.$v.'<br/>';
	}
?>
//////
水果的英文键名:apple,对应的值是:苹果
水果的英文键名:banana,对应的值是:香蕉
水果的英文键名:pineapple,对应的值是:菠萝

函数

PHP自定义函数

PHP内置了超过1000个函数,因此函数使得PHP成为一门非常强大的语言。大多数时候我们使用系统的内置函数就可以满足需求,但是自定义函数通过将一组代码封装起来,使代码进行复用,程序结构与逻辑更加清晰。
PHP函数的定义方式:
    1.使用关键字“function”开始
    2.函数名可以是字母或下划线开头:function name()

    3.在大括号中编写函数体:

<?php
	function say()
	{
	    echo 'hello world';
	}
	say();
	//在这里调用函数
?>
//////
hello world

PHP函数的参数

PHP的函数可以没有参数,也可以有若干个参数,多个参数称之为参数列表,采用逗号进行分割,参数类似于一个变量,调用时用来传递数据到函数体中。通过传递参数可以使函数实现对参数的运算,得到我们想要的结果。

参数的变量名可以自由指定,但最好能够表达相关的意思

<?php
	function sum($a, $b) {
	    echo $a + $b;
	}
	sum(2,5);
	//在这里调用函数计算1+2的值
?>
//////
7

PHP函数之返回值

使用return关键字可以使函数返回值,可以返回包括数组和对象的任意类型,如果省略了 return,则默认返回值为 NULL。
<?php
	function add($a) {
	    return $a+1;
	}
	$b = add(1);
	echo $b;
?>
//////
2
返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行

<?php
	function add($a) {
	    return $a+1;
	    $a = 10;
	    return $a+20;
	}
	$b = add(1);
	echo $b;
?>
//////
2

函数不能返回多个值,但可以通过返回一个数组来得到类似的效果

<?php
	function numbers() {
	    return array(1, 2, 3);
	}
	list ($one, $two, $three) = numbers();
	echo $one;
	echo $two;
	echo $three;
?>
//////
123
函数不能返回多个值,但可以通过返回一个数组来得到类似的效果
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
这是numbers()返回的值
list()只是举个例子而已,重点是函数函数不能返回多个值。

<?php
	function numbers() {
	    return array(1, 2, 3);
	}
	$hh=numbers();
	print_r ($hh);
?>
//////
Array ( [0] => 1 [1] => 2 [2] => 3 )

PHP函数之可变函数

所谓可变函数,即通过变量的值来调用函数,因为变量的值是可变的,所以可以通过改变一个变量的值来实现调用不同的函数。经常会用在回调函数、函数列表,或者根据动态参数来调用不同的函数。可变函数的调用方法为变量名加括号。

<?php
	function name() {
	    echo 'jobs';
	}
	$func = 'name';
	$func(); //调用可变函数
?>
//////
jobs
可变函数也可以用在对象的方法调用上。

<?php
	class book {
	    function getName() {
	        return 'bookname';
	    }
	}
	$func = 'getName';
	$book = new book();
	echo $book->$func();
?>
//////
bookname

PHP函数之内置函数

内置函数指的是PHP默认支持的函数,PHP内置了很多标准的常用的处理函数,包括字符串处理、数组函数、文件处理、session与cookie处理等。

通过内置函数str_replace可以实现字符串的替换。下面的例子将“jobs”替换成“steven jobs”:

<?php
	$str = 'i am jobs.';
	$str = str_replace('jobs', 'steven jobs', $str);
	echo $str; //结果为“i am steven jobs”
?>

PHP函数之判断函数是否存在

当我们创建了自定义函数,并且了解了可变函数的用法,为了确保程序调用的函数是存在的,经常会先使用function_exists判断一下函数是否存在。同样的method_exists可以用来检测类的方法是否存在。

<?php
	function func() {
	}
	if (function_exists('func')){
	    echo 'exists';
	}
?>

类是否定义可以使用class_exists。

<?php
	class MyClass{
	}
	// 使用前检查类是否存在
	if (class_exists('MyClass')) {
	    $myclass = new MyClass();
	}
?>

PHP中有很多这类的检查方法,例如文件是否存在file_exists等。

<?php
	$filename = 'test.txt';
	if (!file_exists($filename)) {
	    echo $filename . ' not exists.';
	}
?>

判断函数func是否存在,如果存在的话就调用他。

<?php
	function func() {
	    echo 'exists';
	}
	$name = 'func';
	if (function_exists($name)) { //判断函数是否存在
	    $name();
	}
?>

类与面向对象

PHP类和对象

类是面向对象程序设计的基本概念,通俗的理解类就是对现实中某一个种类的东西的抽象, 比如汽车可以抽象为一个类,汽车拥有名字、轮胎、速度、重量等属性,可以有换挡、前进、后退等操作方法。

通常定义一个汽车类的方法为:

<?php
	class Car {
	    $name = '汽车';
	    function getName() {
	        return $this->name;
	    }
	}
?>

类是一类东西的结构描述,而对象则是一类东西的一个具体实例,例如汽车这个名词可以理解为汽车的总类,但这辆汽车则是一个具体的汽车对象。

对象通过new关键字进行实例化:

        $car = new Car();
	echo $car->getName();
类与对象看起来比较相似,但实际上有本质的区别,类是抽象的概念,对象是具体的实例。类可以使程序具有可重用性。

<?php
	class car{
		public function rec(){
			echo "你好";
		}
		public function caa(){
			$this->rec();
		}
	}
	$cat=new car();
	$cat->caa();
?>
//////
你好
定义类的属性为公共,
var跟public一个意思,var是php旧版的用法。

<?php
	class Car {
	    var $name = '汽车';
	    function getName() {
	        return $this->name;
	    }
	}

	//实例化一个car对象
	$car = new Car();
	echo $car->getName();  //调用对象的方法 输出对象的名字
	echo $car->name;
?>
//////
汽车汽车
<?php
	class Car {
	    public $name = '汽车';
	    function getName() {
	        return $this->name;
	    }
	}

	//实例化一个car对象
	$car = new Car();
	echo $car->getName();  //调用对象的方法 输出对象的名字
	echo $car->name;
?>
//////
汽车汽车
<?php
	//定义一个类
	class Car {
	    var $name = '汽车';
	    function getName() {
	        return $this->name;
	    }
	}

	//实例化一个car对象
	$car = new Car();
	$car->name = '奥迪A6'; //设置对象的属性值
	echo $car->getName();  //调用对象的方法 输出对象的名字
?>
//////
奥迪A6

PHP类和对象之创建一个对象

类通过关键字class开头,然后是类名与花括号,在花括号中定义类的属性与方法。类名必须是字母或下划线开头,后面紧跟若干个字母、数字或下划线,类名最好能够表意,可以采用名词或者英文单词。

<?php
	//定义一个类
	class Car {
	    //定义属性
	    public $name = '汽车';

	    //定义方法
	    public function getName() {
	        //方法内部可以使用$this伪变量调用对象的属性或者方法
	        return $this->name;
	    }
	}
	$car = new Car();
	echo $car->getName();  //调用对象的方法 输出对象的名字
?>
//////
汽车

也可以采用变量来创建

<?php
	//定义一个类
	class Car {
	    //定义属性
	    public $name = '汽车';

	    //定义方法
	    public function getName() {
	        //方法内部可以使用$this伪变量调用对象的属性或者方法
	        return $this->name;
	    }
	}
	$className = 'Car';
	$car = new $className();
	echo $car->getName();
?>
<pre name="code" class="php">//////
汽车