php数组基本介绍

一、php数组健名:

      (1)、php数组健名只能是以整形数字或者字符串形式的数据类型。

       (2)、若健名不是整形数字或者字符串,则转化成整形数字或者字符串;

       (3)、若健名是true/false的布尔型数据类型,则健名分别转化成整形数组1/0;若健名是实型(浮点型)数据类型,则健名转化成整形(去掉小数点取整),若健名是NULL(null型),则对应健名转化成''(空字符串);


二、php数组值:

       (1)、php数组中的值,可以是任意类型数据,即:可以是false、null...等数据类型;

       (2)、若一个php数组中,健名一样的情况下(有的能转化成整形、字符串),后面的值覆盖前面的值;


三、php数组创建方式:

                                            /******* 数组的创建方式 ********/

//1、array()方式定义数组;

$crr = array('name'=>'zhangsan','heiht'=>176,'age'=>'first',null=>'wanger','yinhang'=>'guangda','buer'=>false,'shuzi'=>'777',false=>'kaokao','mmmm'=>null);


for(;key($crr)!==null;next($crr)){   // 注意:1、当前指针所对应的健名不存在,或者数组健名未定义不存在(空数组)的时候,返回null(这里不是false,false可以当做健名的);
	
	var_dump(key($crr));        // 2、由于数组的值可以是任意类型数据,当前指针对应的值可能是0、'0'、null、''以及布尔值false;  所以在for()语句中用key()判断条件,而不用false;

	echo '<br/>';
	
}

/***结果为****

string(4) "name" 
string(5) "heiht" 
string(3) "age" 
string(0) ""          // 健名null转化成了''(空字符串);
string(7) "yinhang" 
string(4) "buer" 
string(5) "shuzi" 
int(0)                 // 健名false转化成了0(整形数字);
string(4) "mmmm" 

*********/




//2、追加元素方式创建数组;

$drr['name'] = 'wangwu';
$drr[] = 178;
$drr[false] = 'booler';

print_r($drr);    

// 结果为:Array ( [name] => wangwu [0] => booler ); 健名false转化成了0,前面的'$drr[]'健名也是0,所以后面的值覆盖前面的值(健名一样时候);




//3、range()函数创建连续等序列数组;

$err = range(0,5);     // 创建一个值从0到5的数组,(每个值元素默认差1);

print_r($err);    //Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 );默认序列差是1;

$frr = range(0,10,2);  // 创建一个值为从0到10的的数组,并设置每个值序列差是2;

print_r($frr);  //Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 [4] => 8 [5] => 10 );





//4、array_fill():创建填充(几个长度),一样元素的数组;

$grr = array_fill(-5,5,'xxoo');  // 索引从-5开始,5个元素(长度)的XXOO;

print_r($grr);  // Array ( [-5] => xxoo [0] => xxoo [1] => xxoo [2] => xxoo [3] => xxoo );  

// 如果索引从负数开始,则第一个元素的索引为指定的负数;往后索引则从0开始;




//5、array_combine():创建一个数组,第一数组的值作为健名,第二个数组的值,作为值;

echo '<hr/>';

$hrr = array(34,45,56,34);

$jrr = array('taso','mimi','taotao','guagua');

$mmm = array_combine($hrr,$jrr);

print_r($mmm);        //   Array ( [34] => guagua [45] => mimi [56] => taotao );  34的健名一样,后面的值覆盖前面的值;

// 注意:健、值的元素个数必须保持一致才行,否则会报错,返回false;

print_r(array_combine(range(1,5),range(1,5)));    //  Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )  range()和array_comnine()结合;





//6、compact()将一个或者多个变量转化成数组;

//  变量名将作为数字的健名,变量值将作为数组健名对应的值存在;


$city  = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";

$location_vars = array("city", "state");

$result = compact("event", "nothing_here", $location_vars);    // $location_vars 是一个可变变量;

print_r($result);    //Array ( [event] => SIGGRAPH [city] => San Francisco [state] => CA )  // 不存在的变量名将会被舍弃;数组中的值,将作为变量的名;

四、php数组遍历方式:

                                                 /******* 数组的遍历方式 ********/


$arr = array(-1,-2,-3,0,1,2,34,5,null=>false);


// 方法1: foreach();


foreach($arr as $keys=>$values){
	
	echo $keys.'======>'.$values;
	echo '<br/>';
}


// 方法2: 利用数组指针


reset($arr);                      // 指针回到初始位置;

for(;key($arr)!==null;next($arr)){
	
	echo key($arr).'=====>'.current($arr);
	echo '<br/>';
	
}


//  方法3:   each()函数,


reset($arr);

while(list($a,$b)= each($arr)){
	
	echo $a.'======>'.$b;
	echo '<br/>';
}

五、php数组指针相关:

                                                /******* 数组的指针相关 ********/
												
												
												
//foreach: 赋值(或者引用变量地址)给$values,并将数组指针下移,Warning:数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。

//each: 返回数组中当前指针所对应的健、值,并将指针下移一步;如果指针出界(没有对应的单元内容的时候),则返回false;

// key:   返回当前指针所对应的健,若无对应的指针没有健名(偏离出了数组),或者空数组,则返回null;

//current:  如果当前指针无对应的数组元素,则返回false;(注意:返回的数组当前的值,也有可能转化能false,如0,'',false...等等);

//next: 先将内部指针指向下一个单元,再返回指针所对应的(下一单元)值; 没有更多单元的时候(指针出界),返回false;

// resst(): 将数组指针移动数组的第一个元素并返回其值,如果数组为空,则返回false;

// end():  将数组的指针移动到数组的最后一个单元,并返回其值;  如果数组为空,则返回false;											
																							
																				
												
//list 注意1;

list($m,$n,$k)= array(89,92);

echo $m;  //89

echo $n;   //92

var_dump($k);   //null  参数无值的时候,默认为NULL;


// list  注意2;

list(,,$k)= array(89,2=>92);

var_dump($k);    // 92;  $k对应的是数组下标为2 的值;

五、注意:


1、array_pop();弹出数组最后一个元素;

2、array_shift():弹出数组第一个元素:

3、key():返回数组当前指针所对应的健名;

     如果数组的当前指针超出了数组元素的范围,或者数组为空,则都返回的是null;

      array_splice():去除数组元素(并用其他值替换);和array_pop()等函数一样,函数都是引用(地址)传值,函数调用后,原数组将一并改变;

猜你喜欢

转载自blog.csdn.net/prdslf001001/article/details/78900323