创建索引数组
$arr =array('name'=>'molaifeng','age'=>'25','height'=>'167');
foreach($arr as $value) {
echo $value.' ';
}
echo '<hr />';
引用字符做索引的数组单元时,索引必须加单引号
echo $arr['name'],'<hr />';
判断某数组是否为空
$arr = array();
echo empty($arr)?'该数组为空<hr/>':'该数组不为空<hr/>';
通过foreach改变数组里的值
$arr = array(1,2,3,4,5,6);
foreach($arr as $index=>$value) { //这个方法特别适用于自动生成update语句
echo $arr[$index] = $value*2;
echo ' ';
}
echo '<hr />';
判断索引是否在该数组内
$arr =array('name'=>molaifeng,'age'=>'25','height'=>'167');
echo array_key_exists('age',$arr)?'存在<hr />':'该索引不存在<hr />';
判断值是否在该数组内
echo in_array('25',$arr)?'存在<hr />':'该值引不存在<hr />';
分别打印数组的键(索引)和值
print_r(array_keys($arr));
echo '<br />';
print_r(array_values($arr));
echo '<hr />';
计算数组的长度,对于其他类型 返回 1,对于null ,返回 0
echo '该数组的长度为:',count($arr),'<br />';
echo 'count里不是数组而是字符串',count('string'),'<br />';
echo 'count里不是数组而是空',count(null),'<hr />';
通过指针指向数组的单元的函数 current,next,prev,end,reset,key
echo '打印当前的值,也就是索引为0或是数组的第一个值:',current($arr),'<br />';
echo '打印下一个值:',next($arr),'<br />';
echo '打印最后的值:',end($arr),'<br />';
echo '打印上一个值:',prev($arr),'<br />';
echo '重置:',reset($arr),'<br />';
echo '显示当前的索引:',key($arr),'<hr />';
list函数,首先把list的内部的变量与array中的单元
不管数组中有没有此单元按顺序,从array[0],逐一对应.
一一对应之后,从右往左赋值.
list($a,$b) =array('name','molaifeng');;
echo $a,' ',$b,'<hr />';
each函数,是把当前的键/值读出来,并放到一个数组中,并把数组的内部指针往尾部移一下.
//echo返回的是诸如Array ( [1] => molaifeng [value] => molaifeng [0] => name [key] => name )
$tmp = each($arr);
print_r($tmp);
echo '<br />',$a,' ',$b,'<hr />';
echo '<span style="color:red">结合list和each模拟foreach</span><br />';
$arr =array('name'=>'molaifeng','age'=>'25','height'=>'167');
while($temp = each($arr)) {
list($key,$value) = $temp;
echo $key,'--',$value,'<br />';
}
echo '<hr />';
array_flip 交换数组中的键与值
print_r(array_flip($arr));
echo '<hr />';
range(low,hight),依次打印从low到high或从high到low
print_r(range(1,10));
echo '<br />';
print_r(range(10,1));
echo '<hr />';
结合range和array_sum计算从1到100的值
echo array_sum(range(1,100)),'<br />';
$arr = array('a','b',1,2,3);
echo array_sum($arr),'<hr />';
array_push ,往数组里追加单元,将一个或多个单元压入数组的末尾(入栈),推荐直接操作数组来追加,如下
$arr =array('name'=>'molaifeng','age'=>'25','height'=>'167');
array_push($arr,'weight','hobby');
$arr[] = 'new'; //记住挺有用的
print_r($arr);
echo '<hr />';
array_pop — 将数组最后一个单元弹出(出栈)
array_pop($arr);
print_r($arr);
echo '<hr />';
array_shift — 将数组开头的单元移出数组(出栈),并返回该单元的值
echo array_shift($arr),'<br />';
print_r($arr);
echo '<hr />';
array_unshift — 在数组开头插入一个或多个单元(入栈)
//所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。
array_unshift($arr,'molaifeng');
print_r($arr);
echo '<hr />';
给数组排序,把数组单元的由小到大排序,并且重新排key,从0开始
$arr = array(9,11,1,2,3,4);//关联数组排序
sort($arr);
print_r($arr);
echo '<br />';
$arr = array('a'=>13,'b'=>2,'c'=>1,'d'=>9,'d'=>5,'e'=>0);
sort($arr);//关联数组排序,但会丢失字符索引
print_r($arr);
echo '<br />';
$arr = array('a'=>13,'b'=>2,'c'=>1,'d'=>9,'d'=>5,'e'=>0);
asort($arr);//关联数组排序,保留字符索引
print_r($arr);
echo '<hr />';
把两个数组合并
$arr1 = array(9,11,1,2,3,4);
$arr2 = array('a'=>13,'b'=>2,'c'=>1,'d'=>9,'d'=>5,'e'=>0);
print_r(array_merge($arr1,$arr2));
echo '<hr />';
求来个数组的交集
$arr1 = array(9,11,1,2,3,4);
$arr2 = array(1,2,3,4,5);
print_r(array_intersect($arr1,$arr2));
echo '<hr />';
array_unique — 移除数组中重复的值
$arr = array(9,11,1,2,3,9,2,3,4);
print_r(array_unique($arr));
echo '<hr />';
array_reverse — 返回一个单元顺序相反的数组 print_r(array_reverse($arr));
echo '<hr />';
手动写个关于数组倒序的方法
$arr = array(1,2,3,4,5);
function fan($arr) {
$temp = array();
foreach($arr as $v) {
array_unshift($temp,$v);
}
return $temp;
}
print_r(fan($arr));
echo '<hr />';
使用list调用数组的单元
$arr = array('a','b');
print_r($arr);
echo '<br />';
list($arr[1],$arr[0]) = ($arr = $arr);
print_r($arr);
echo '<hr />';
把数组转化为字符串、把字符串转换为数组
$arr = array('a','b');
$str = implode(',',$arr);
echo '$arr转换后的字符串为:',$str,'<br />';
$str = explode(',',$str);
echo '$str转换后的数组为:';
print_r($str);
echo '<hr />';
echo '<span style="color:red">一道腾迅面试题,将1234567890转换成1,234,567,890 每3位用逗号隔开的形式</span><br />';
$str = '1234567890';
echo '第一种方法,调用系统函数直接转换:',number_format($str),'<br />';
echo '第二种方法,结合strrev,chunk_split,trim:',strrev(trim(chunk_split(strrev($str),3,','),',')),'<br />';
echo '第三种方法,数组和字符串相结合:',strrev(implode(',',str_split(strrev($str),3))),'<br />';