一、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()等函数一样,函数都是引用(地址)传值,函数调用后,原数组将一并改变;