PHP课堂笔记

PHP 数组的分类

一维 二维数组

PHP中不存几维的概念,只有键和值得对应关系。数组的递归。

关联数组,索引数组

关联数组:                          索引数组:

$stus=array{                     $stus=array{'张三','李四','王二','王五'};

'name'=>'张三',

'age'=>30,

'hobby'=>'打球'

};

键值操作:

array_keys(数组);获取所有的键

array_values(数组);获取所有的值

in_array('值',数组);是否存在某个值

array_key_exists('键',数组);是否存在某个键

判断某个元素是否存在。典型的是使用isset();来判断

isset($array['键']);

array_fill();填充数组

数组 = array_fill(起始下标,填充的元素个数,填充的值);

array_combine();利用两个数组合并成一个数组,其中一个作为键,一个作为值

 int mt_rand(2,10);在2~10之间取一个随机数

array_chunk($array,n);拆分数组,原则是子数组每个组内n个元素。array_merge()合并数组。

explode('分隔符',数组);将字符串依据某个分隔符,分割成多个数组   常用 与implode成对出现,使用相同分隔符

implode('分隔符',数组);将数组内的元素,利用某个分隔符,连接成一个字符串。

字符串函数:str_split('abcd'),分割成一个数组。

array_intersect($arr1,$arr2);计算两个数组的交集,找到在$arr1中存在,也在$arr2中存在的元素,数据是出现在第一个参数中的

array_diff($arr1,$arr2);计算两个数组的差集。找到在$arr1中存在,但是在$arr2中不存在的元素

array_push();入栈   array_pop();出栈       入栈出栈与删除元素和增加元素使用[]不同,入栈出栈会重新索引,保证所有的元素都是由0开始逐一递增。

但是如果只是想单纯地增加一个元素,用[]的形式比较好。应为入栈做的工作较多,效率比较低。   入栈出栈严格维护

array_shift();顶端出,array_unshift();顶端进。      尾端是push跟pop,顶端是shift跟unshift。

回调函数:array_map(function(),数组);可以针对数组的每一个元素的值,去调用某个函数!比较适合索引数组

array_map('max',数组,···);典型功能:一次性处理多个数组,可以同时将多个相同位置的参数,传递到一个函数内!

array_map(null,数组,···);处理多个数组时,默认操作是将三个数组合并成一个数组。形成一个二维数组

array_walk(数组,function($value,$key))类似于foreach 

$arr = array(

  array('name'=>'张三','age'=>'30','porst'=>'打球','sex'=>'男'),

  array('name'=>'李四','age'=>'30','porst'=>'打球','sex'=>'男')

);

$arr = array(

  'name'=>'张三',

  'age' =>'20',

  'hobby'=>array(0=>'打球',1=>'骑马',2=>'钓鱼',3=>'喝酒','sports'=>array('投石','射箭','跑步')) 

);

echo count($stu_infos);//值为2

echo count($stu_infos,true); //值为8 count 获取数组元素个数, 可以设置第二个参数true,表示是否递归统计

 

foreach 遍历数组

$names = array(
    '李子','梨子','例子','粒子','栗子','离子'
);
//foreach(遍历的数组 AS 键变量 => 值变量)

next($names);next($names);  //移动指针,

//foreach 首先要初始化数组元素指针,所以还是从指针默认指向的第一个元素开始遍历  不会受next($names)影响。
foreach($names as $k => $v){
    var_dump($k,$v);
    echo '<br>';
}
  var_dump(key($names));
  echo '<hr>';
  //foreach (遍历的数组 AS 值变量){
    //循环体
  //}
  //
//
//  foreach($names AS $value){     //foreach 遍历之前 首先初始化数组元素指针。
//    var_dump($value);
//    echo '<br>';
//  }
//
//
//
//foreach($names as $key => $value){
//    $key+=10;
//    $value.='子';
//    var_dump($key,$value);
//    echo '<br>';
//}
//var_dump($names);  //不会影响原数组键和值

//foreach($names as $key =>& $value){//$value= $names[$key]   //值变量可以引用 传递,但是$key键变量不能引用传递。
//    $value.='子';
//    var_dump($key,$value);
//    echo '<br>';
//}
//var_dump($names);


foreach($names as $key => $value){  //foreach 遍历的是原数组的拷贝,而不是在原数组上做的操作
                                    //在遍历的过程中,如果对原数组做操作,是不会影响到遍历结果的

    var_dump($key,$value);
    echo '<br>';
    //$names[6]='墨子';
    //$names[]='new element';
}
var_dump($names);

echo '<hr>';

foreach($names as $key => $value):
    var_dump($key,$value);
    if($key==3):
        break;
    endif;
    echo '<br>';
    endforeach;
var_dump($names);

 

 

数组指针的操作

利用php的内置函数:

key

current

next();//移动到上一个

prev();//下一个

reset();//重置,移动到第一个

end();//移动到uzihou一个元素上

注意一旦指针位置非法,则不能做相对移动(next,prev),可以绝对移动(rest,end)。

reset使用频率较高!

each(), 集合了key,current,和 next 三者的功能!将当前元素信息获得后,移动指针到下一个元素上!

元素信息数组 = each($arr)移动指针

注意,元素信息数组。是两种表示反感:索引和关联 其中:

索引:0,1分别表示 键和值

关联:key,value分别表示 键和值

$names = array(
    '李子','梨子','例子','粒子','栗子','离子'
);
var_dump(each($names));  

输出结果:
//array(4) {
//    [1]=> string(4) "李子"
//    ["value"]=> string(4) "李子"
//    [0]=> int(0)
//    ["key"]=> int(0)
//}

$names = array(
    '李子','梨子','例子','粒子','栗子','离子'
);

next($names);
next($names);
prev($names);
echo current($names);

echo '<hr>';
end($names);
prev($names);
echo current($names);

echo '<hr>';
end($names);
next($names);
prev($names);
end($names);
var_dump(current($names));

你可能感兴趣的:(PHP课堂笔记)