代码日记

 

<?php
//设置响应头格式
header("Content-type:text/html;Charset=utf-8");
//数组的指针
// key
// 语法是:key(数组名)
// 作用:获取该数组当前元素的键!
$arr = array (
'name'=>'kent',
'age' =>'22';
'sex' =>'man';
);
echo "<pre>";
var_dump(key($arr));

// current
// 语法是:current(数组名)
// 作用:获取该数组当前元素的值!
var_dump(current($arr));

// next
// 语法是:next(数组名)
// 作用:将数组的指针下移一位
next($arr);

//获取$arr当前元素的键!
var_dump(key($arr));

//获取$arr当前元素的值!
var_dump(current($arr));

//利用上面的三个函数实现数组的遍历
//用for循环实现数组的遍历
for($i=1,$sum=count($arr);$i<=$sum;$i++){
//获取$arr当前元素的键!
$key= key($arr);
//获取$arr当前元素的值!
$value= current($arr);
var_dump($key,$value);
next($arr);
} //但是最后会出现一个空的值

// reset
// 语法是:reset(数组名)
// 作用:重置数组的指针(将数组的指针重新指向第一个元素)
for($i=1,$sum=count($arr),reset($arr);$i<=$sum;$i++){
//获取$arr当前元素的键!
$key= key($arr);
//获取$arr当前元素的值!
$value= current($arr);
var_dump($key,$value);
next($arr);
} //指针重置之后就不会出现上一个循环的问题
// prev
// 向上移动数组指针,previous(先前的)

// end
// reset是将数组的指针移动到第一个元素,那么end也是重置指针,不过是重置到最后一个元素!

// 注意:
// 如果指针的位置已经非法,就不能在做相对移动了(向上或向下),只能做绝对移动,也就是重置(reset或end)

 

 

// while+each+list遍历
// each
// 还有一个功能特别强大的函数,就是each函数
// 语法:
// each(函数名);

// 作用:
// 同时兼备了key、current、next函数的功能,既可以获取到当前元素的值,也能获取到当前元素的键!

// list
// 也是一个系统函数,它可以利用一个索引数组,一次性的为多个变量赋值!
reset($arr);
while(list($key,$value) = each ($arr)){
//遍历相关的操作
var_dump($key,$value);
}

//数组的常用函数
// count
// 计算并返回数组中的元素的个数或者对象中的属性的个数!另外,count还有第二个参数,默认为0或false,如果是1或true,则支持递归统计:
$arr = array (
'name'=>'kent',
'age' =>'22';
'sex' =>'man';
);
var_dump(count($arr));

// range 。建立一个包含指定范围单元的数组
// 使用range来定义数组,有三个参数:
// 1,开始字符或数字
// 2,结束的字符或数字
// 3,步伐:一次跳转几个字符或数字 不添加默认为一个
$arr1 = range(1,20);
$arr2 = range(1,20,2);
$arr3 = range('a','z');

// array_merge 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
$arr4 = array_merge($arr1,$arr3);
// 注意: 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。


// array_rand
// 这里的rand是随机的意思,作用是随机抽取数组内的几个元素的键!并返回一个索引数组!
// 需要两个参数:
// 第一个是一个数组名
// 第二个抽取的个数 特殊的情况:如果省略掉第二个参数,默认为1
array_rand($arr3,3);


//shuffle 将数组打乱。作用是打乱一个数组,而且是直接在原数组上进行打乱!而且会重新生成索引下标!
shuffle($arr3);


// 制作验证码
// 算法:
// 1,拼凑出一个数组,里面有大小写英文字母和数字(range和array_merge)
// 2,打乱该数组(shuffle)
// 3,利用array_rand随机获取若干个该数组的下标(键)
// 4,依次根据数组的键获得数组的值,拼凑到一起(foreach遍历)
$arr =array_merge(range('a', 'z'),range('0', '9'),range('A', 'Z'));
shuffle($arr);
$rand_keys = array_rand($arr,4);
$str = ' ';
foreach ($rand_keys as $value) {
$str .= $arr[$value];
}
echo $str;


//数组的常用函数
// max和min
// 还可以获得数组内的最大值和最小值!
$arr0=array(105,25,34,36);
echo max($arr0);
echo min($arr0);


// array_keys
// 获取所有元素的键,返回一个索引数组!
$keys = array_keys($arr0);
var_dump($keys);

// array_values
// 获取所有元素的值,返回一个索引数组!
$values = array_values($arr0);
var_dump($values);

posted @ 2016-11-23 13:45  MargoHu  阅读(143)  评论(0编辑  收藏  举报