<!-- PHP数组与数据结构 -->
<?php
// // $arr = array('欢迎',10 => '学习',
// // 'php',
// // 19 => '语言','相信自己一定能学会'
// // );
// // $arr = array('刘亦菲',
// // 'anglebaby','鹿晗','范彬彬'
// // );
// $arr[0] = '北京';
// $arr[1] = '上海';
// $arr[2] = '广州';
// $arr = array('0' => '小明',
// '1' => '小龙',
// '2' => '小花',
// '3' => '小兰'
// );
// $arr = [
// ['南宁','崇左','凭祥','桂林','百色'],
// ['龙州','武鸣','宁明','大兴','苹果']
// ];
// $arr = array(
// array('南宁','崇左','凭祥','桂林','百色'),
// array('龙州','武鸣','宁明','大兴','苹果')
// );
// echo '<pre>';
// echo count($arr);die;
// var_dump($arr[2]);
// echo '</pre>';
?>
<?php
$num = array('南宁','崇左','凭祥','桂林','百色');
for ($i = 0;$i < count($num);$i++){
echo $num[$i].'<br />';
}
unset($num[1]);
var_dump($num);
$name = array(
'name1' => '芙蓉',
'name2' => '凤姐'
);
foreach ($name as $key => $value){
echo $key.'——————'.$value.'<br />';
}
$city = array(
0 => array(
'南宁' => 'nanning',
'百色' => 'baise',
'凭祥' => 'pingxing'
),
1 => array(
'广州' => 'guangzou',
'深圳' => 'shengzheng',
'东莞' => 'dongguan'
)
);
foreach ($city as $value){
foreach ($value as $k => $v){
echo $k.'—'.$v.'<br />';
}
}
list($one,$two,$three) = array('张三','李四','王五');
echo '$one----'.$one.'<br />';
echo '$two----'.$two.'<br />';
echo '$three--'.$three.'<br />';
$kongjie = [
'gao' => '黑丝',
'lian' => '很白',
'tui' => '很细',
'wuguan' => '精致',
'shengyin' => '甜美',
];
$date = each($kongjie);
echo '<pre>';
var_dump($date);
echo '<pre>';
list($one,$two) = each($kongjie);
echo $one.'-'.$two.'<br />';
$minggren = array("邓超","黄晓明","泞泽涛","钟汉良");
$dc = array_shift($minggren);//删除数组开头第一个单元
array_unshift($array, $value1);//数组开头插入一个或多个单元
array_push($array, $value1);//将一个或多个单元压入数组末尾
array_pop($array);//删除数组末尾单元,并长度减一
current($array);//返回数组中的当前单元
key($array);//从关联数组中取得键名
next($array);//将数组中的内部指针向前(数组的下一个元素)移动一位
prev($array);//将数组的内部指针倒回一位(从当前位置指向上一个元素)
reset($array);//返回数组中第一个元素位置
end($array);//指向数组最后一个元素位置
print_r($minggren);//打印出函数结构
//php数组常用函数
array_combine($keys, $values);//创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
range($start, $end);//根据范围创建数组,包含指定的元素
compact($varname1);//建立一个数组,包括变量名和它们的值
array_fill($start_index, $num, $value);//用给定的值填充数组
array_chunk($array, $size);//将一个数组分割成多个
array_merge($array1);//合并一个或多个数组
array_slice($array, $offset, $length, $preserve_keys);//从数组中取出一段
array_diff($array1, $array2);//计算数组的差集
array_search($needle, $haystack);//在数组中搜索给定的值,如果成功则返回首个相应的键名
array_splice($input, $offset ,$length, $replacement);//去掉数组中的某一部分并用其它值取代
array_sum($array);//对数组中所有值求和
in_array($needle, $haystack);//检查数组中是否存在某个值
array_key_exists($key, $array);//检查数组里是否有指定的键名或索引
shuffle($array);//打乱数组
count($array_or_countable);//数组长度
array_flip($array);//交换数组中的键和值
array_keys($array);//返回数组中部分的或所有的键名
array_values($array);//返回数组中所有的值
array_reverse($array);//返回单元顺序相反的数组
array_count_values($array);//统计数组中所有的值
array_rand($array);//从数组中随机取出一个或多个单元
array_unique($array);//移除数组中重复的值
sort($array);//对数组排序(从低到高)
rsort($array);//对数组逆向排序(从高到低)
asort($array);//对数组进行排序并保持索引关系(按字母顺序)
arsort($array);//对数组进行逆向排序并保持索引关系
ksort($array);//对数组按照键名排序(按字母顺序)
krsort($array);//对数组按照键名逆向排序
natsort($array);//用"自然排序"算法对数组排序
natcasesort($array);//用"自然排序"算法对数组进行不区分大小写字母的排序
array_filter($array);//用回调函数过滤数组中的单元
extract($array, $flags, $prefix);//从数组中将变量导入到当前的符号表
?>
<!-- 数组练习题 -->
<?php
// 1.将数组的键名全部转换成小写和大写的函数是什么?
// 答:array_change_key_case($array [,CASE_LOWER|CASE_UPPER])
// 2.创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值的函数是什么?
// 答:array array_combine ( array $keys , array $values )
// 3.统计数组中所有的值出现的次数的函数是什么?
// 答:array array_count_values ( array $input )
// 4.返回数组中部分的或所有的键名的函数是什么?
// 答:array array_key($array [,$search_value [,true|false]])
// 5.将回调函数作用到给定数组的单元上的函数是什么?
// 答:array array_map ( callable $callback , array $arr1 [, array $... ] )
// 6.合并一个或多个数组的函数是什么?
// 答:array array_merge ( array $array1 [, array $... ] )
// 7.将数组最后一个元素弹出的函数是什么?
// 答:mixed array_pop ( array &$array )
// 8.将一个或多个单元压入数组的末尾(入栈)的函数是什么?
// 答:int array_push ( array &$array , mixed $var [, mixed $... ] )
// 9.从数组中随机取出一个或多个单元的函数是什么?
// 答:mixed array_rand ( array $input [, int $num_req = 1 ] )
// 10.返回一个单元顺序相反的数组的函数是什么?
// 答:array array_reverse ( array $array [, bool $preserve_keys = false ] )
// 11.在数组中搜索给定的值,如果成功则返回相应的键名的函数是什么?
// 答:array_search ( mixed $needle , array $haystack [,$strict = false ] )
// 12.将数组开头的单元移出数组的函数是什么?
// 答:mixed array_shift ( array &$array )
// 13.移除数组中重复的值的函数是什么?
// 答:array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
// 14.在数组开头插入一个或多个单元的函数是什么?
// 答:int array_unshift ( array &$array , mixed $var [, mixed $... ] )
// 15.返回数组中所有的值的函数是什么?
// 答:array array_values ( array $input )
// 16.对数组进行逆向排序并保持索引关系的函数是什么?
// 答:bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 17.对数组进行正向排序并保持索引关系的函数是射门?
// 答:bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 18.返回数组中当前的键/值对并将数组指针向前移动一步的函数是什么?
// 答:array each ( array &$array ),例如:while(list($key,$value)=each($array)){}
// 19.对数组按照键名逆向排序的函数是什么?
// 答:bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 20.对数组按照键名正向排序的函数是什么?
// 答:bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 21. 对数组逆向排序的函数是什么?
// 答:bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 22.对数组正向排序的函数是什么?
// 答:bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 23.将数组打乱的函数是什么?
// 答:bool shuffle ( array &$array )
// 24.count() 的别名函数是什么?
// 答:sizeof()
// 25.将变量转换成数组的函数是什么?
// 答:compact();例如:$user='zong';$pwd=123;compact('user','pwd')结果为array('user'=>'zong','pwd'=>123)
//26.写函数创建长度为10的数组,数组中的元素为递增的奇数,首项为1
function arrsort($first,$length){
$arr = array();
for ($i=0;$i<=$length;$i++){
$arr[] = $i*2-1;
}
return $arr;
}
$arr1 = arrsort(1, 10);
var_dump($arr1);
//27.创建长度为10的数组,数组中的数为递增的等比数,比值为3,首项为1
function arrsort1($first,$length,$num){
for ($i=$first;$i<=$length;$i++){
$arr[] = $num*pow($num, $i-2);
}
return $arr;
}
$arr1 = arrsort1(1, 10,3);
var_dump($arr1);
//28.求数组中最大数的下标
function maxkey($arr){
$maxval = max($arr);
foreach ($arr as $key=>$val){
if ($maxval == $val){
$maxkey = $key;
}
}
return $maxkey;
}
$arr = array(0,-1,-2,5,"b"=>15,3);
echo maxkey($arr);
//29.创建一个长度为10的数组,数组中的元素满足斐波那契数列的规律
function arrFibo($len){
$arr[0] = 0;
$arr[1] = 1;
for ($i=2;$i<$len;$i++){
$arr[$i] = $arr[$i-1]+$arr[$i-2];
}
return $arr;
}
echo "<pre>";
print_r(arrFibo(10));
echo "</pre>";
//30.计算数组中最大数和最小数的差
// max/min
function arrsub($arr){
sort($arr);
$min = $arr[0];
rsort($arr);
$max = $arr[0];
$sub = $max - $min;
return $sub;
}
$arr = array(-1,-2,100);
echo arrsub($arr);
//31.写一个方法,将一个长度超过10的数组最后5项直接截取,不改变顺序变为前5项,
//如{1,2,3,4,5,6,7,8,9,10}变为{6,7,8,9,10,1,2,3,4,5}.
function arrsort2($arr){
$num = count($arr);
if ($num > 10) {
$arr_firstpart = array_slice($arr, 0,$num-5,true);
$arr_lastpart = array_slice($arr, ($num-5),5,true);
}else {
echo "数组不超过10个元素,请重新输入";
exit;
}
$arr_new = array_merge($arr_firstpart,$arr_lastpart);
return $arr_new;
}
$arr = array("a" => 1,2,3,8,9,6,"b"=>5,-1,"c"=>8,0,7);
echo "<pre>";
print_r($arr);
echo "<br>= = = = = 拼接后 = = = =<br><br>";
print_r(arrsort2($arr));
echo "</pre>";
//32.将两个数组连接成一个新数组
$arr = array("a"=>1,"b"=>2,3);
$arr2 = array("a"=>Dee,3,5);
$arr3 = array_merge($arr,$arr2);
$arr4 = array_merge_recursive($arr,$arr2);
echo "<pre>";
print_r($arr3);
echo "<br>= = = = =<br><br>";
print_r($arr4);
echo "</pre>";
//32.1第一个输出的数组中索引为"a"的值1被第二个数组中索引为"a"的值Dee覆盖了
function arrsort3($arr1,$arr2){
$arr_new = $arr1;
foreach ($arr2 as $key=>$val){
$arr_new[] = $val;
}
return $arr_new;
}
$arr1 = array("a"=>1,"b"=>2,3);
$arr2 = array("a"=>Dee,"c"=>3,5);
echo "<pre>";
print_r(arrsort3($arr1,$arr2));
echo "</pre>";
//33.数组的逆序(不能使用rsort函数,不能生成新数组)
$arr = array("a","b","c",1,10);
$i="";
$j="";
$k="";
$len = count($arr);
$half_len = floor($len/2);
for ($i=0;$i<$half_len;$i++){
$j=$arr[$i];
if ($len%2!=0) {
$k = $half_len*2-$i;
}else {
$k = $half_len*2-$i-1;
}
$arr[$i]=$arr[$k];
$arr[$k]=$j;
}
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
php基础一(数组)
最新推荐文章于 2023-10-23 11:34:50 发布