<?php
/*** 1、写函数创建长度为10的数组。数组中的元素为递增的奇数。首项为1。*/
$ary = range(1, 10);
//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 )
print_r($ary);/*** 2、创建长度为10的数组,数组中的元素为递增的等比数,比值为3。首项为1*/
function myfun($n){return pow(3, $n-1);
}
$ary = range(1, 10);
$result = array_map('myfun',$ary);
echo '<br>';
//Array ( [0] => 1 [1] => 3 [2] => 9 [3] => 27 [4] => 81 [5] => 243 [6] => 729 [7] => 2187 [8] => 6561 [9] => 19683 )
print_r($result);/*** 3、求数组中最大数所在的下标;* $arr = array(1,5,67,8,4,3,45,6,887,2);*/
$arr = array(1,5,67,8,4,3,45,6,887,2);
$max = $arr[0];//假设第一个数是最大的
$index = 0;//记录最大数的key值,即下标
foreach ($arr AS $key=>$val) {if ($max < $val) {$max = $val;$index = $key;}
}
//最大数是:887,其下标是:8
echo '<br>最大数是:'.$max . ',其下标是:' . $index;
/* $mval = max($arr);
echo '<br>';
print_r(array_search($mval, $arr)); *//*** 4、创建一个长度为10的数组,数组中的元素满足斐波拉齐数列的规律;*/
$arr = array(1,1);
for ($i=2; $i<10; $i++) {$arr[] = $arr[$i-1]+$arr[$i-2];
}
echo '<br>';
//Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 5 [5] => 8 [6] => 13 [7] => 21 [8] => 34 [9] => 55 )
print_r($arr);/*** 5、计算数组中最大数和最小数的差;*/
$arr = array(1,5,67,8,4,3,45,6,887,2);
/*系统函数简单实现*
$minv = min($arr);
$maxv = max($arr);
echo '<br>';
echo '最大数是:' . $maxv .',最小数是:'.$minv.',差是:'.($maxv-$minv);*//*不使用系统函数实现*/
$max = $arr[0];//假设第一个数是最大的
$min = $arr[0];//假设第一个数也是最小的
foreach ($arr AS $key=>$val) {if ($max < $val) {$max = $val;} elseif ($min > $val) {$min = $val;}
}
echo '<br>';
//最大数是:887,最小数是:1,差是:886
echo '最大数是:' . $max .',最小数是:'.$min.',差是:'.($max-$min);/*** 6、写一个方法,将一个长度超过10的数组最后5项直接截取,不改变顺序直接变为前5项,* 如{1,2,3,4,5,6,7,8,9,10,11,12}在经过方法后变为:{8,9,10,11,12,1,2,3,4,5,6,7}*/
function arrayHandel(&$ary, $count = 5) {if (!(is_array($ary) && count($ary)>10 && count($ary)>$count)) {return false;}$len = count($ary);while ($count>0) {$i = $len-1;$count--;array_unshift($ary, $ary[$i]);array_pop($ary);}
}
$array = array(1,2,3,4,5,6,7,8,9,10,11,12,13);
echo '<br>';
arrayHandel($array);
//Array ( [0] => 9 [1] => 10 [2] => 11 [3] => 12 [4] => 13 [5] => 1 [6] => 2 [7] => 3 [8] => 4 [9] => 5 [10] => 6 [11] => 7 [12] => 8 )
print_r($array);/*** * 7、将两个数组连接成一个新数组;* array_combine($keys, $values) 一个作键,一个作值,但是两个数组个数必须一致,不然会返回false* array_merge($array1)  覆盖相同的键名* array_merge_recursive($array1) 不覆盖相同键名,组成以键名组成的数组集合* */
$arr1 = array('a'=>123,'b'=>1234);
$arr2 = array('os'=>'linux','db'=>'mysql','language'=>'php','server'=>'nginx','b'=>1256);
echo '<br>';
//Array ( [a] => 123 [b] => 1234 [os] => linux [db] => mysql [language] => php [server] => nginx )
print_r($arr1+$arr2);//$arr1会覆盖$arr2中相同键值,运算是从右至左,所以左边的覆盖右边
echo '<br>';
//boolean false
var_dump(array_combine($arr1,$arr2));//boolean false
echo '<br>';
//Array ( [a] => 123 [b] => 1256 [os] => linux [db] => mysql [language] => php [server] => nginx )
print_r(array_merge($arr1,$arr2));//$arr1和$arr2中的相同的元素被后一个$arr2的覆盖
echo '<br>';
//Array ( [a] => 123 [b] => Array ( [0] => 1234 [1] => 1256 ) [os] => linux [db] => mysql [language] => php [server] => nginx )
print_r(array_merge_recursive($arr1,$arr2));/*** 数组逆序(不能直接使用rsort函数,不能生成新数组);*/
$ary = array('apple','juice','orange','85','0','app','1','2','5','z');
/* rsort($ary);
echo '<br>';
print_r($ary); */
for ($i=0;$i<count($ary);$i++){for ($j=$i+1;$j<count($ary);$j++){if($ary[$i]<$ary[$j]){$temp = $ary[$i];$ary[$i] = $ary[$j];$ary[$j] = $temp;}}
}
echo '<br>';
//Array ( [0] => z [1] => orange [2] => juice [3] => apple [4] => app [5] => 85 [6] => 5 [7] => 2 [8] => 1 [9] => 0 )
print_r($ary);

/*** 9、在长度为10的升序有序数组中插入一个数字,组成新数组,保证数组顺序(不能直接使用sort)*/
$arr = range(1, 40, 2);
function insertAry($ary, $val) {$endAry = array();$len = count($ary);$index = 0;if ($ary[$len-1] < $val) {//若插入数比数组中任意数大$ary[] = $val;$endAry = $ary;return $endAry; }while ($index<$len) {if ($ary[$index]>=$val){$endAry[$index++] = $val;for($i = $index;$i<$len+1;$i++){$endAry[$i] = $ary[$i-1]; }break;} else {$endAry[$index] = $ary[$index];}$index++;}return $endAry;
}
echo '<br>';
//Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 [5] => 11 [6] => 13 [7] => 15 [8] => 17 [9] => 19 [10] => 21 [11] => 23 [12] => 25
//[13] => 27 [14] => 29 [15] => 31 [16] => 33 [17] => 35 [18] => 37 [19] => 39 [20] => 88 )
print_r(insertAry($arr,88));
/*** 10、将一个无序数组排列成升序数组;(冒泡排序)*/$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2);
$len = count($arr);for ($i=0; $i<$len; $i++) {for ($j=$len-1; $j>$i; $j--) {if ($arr[$j]<$arr[$j-1]) {$temp = $arr[$j];$arr[$j] = $arr[$j-1];$arr[$j-1] = $temp;}}
}
echo '<br>';
//Array ( [0] => -9 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 8 [8] => 11 [9] => 45 [10] => 67 [11] => 887 [12] => 888 )
print_r($arr);/*********选择排序************/
$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2);
for ($i=0; $i<$len; $i++) {for ($j=$i+1; $j<$len; $j++) {if ($arr[$j]<$arr[$i]) {$temp = $arr[$j];$arr[$j] = $arr[$i];$arr[$i] = $temp;}}}
echo '<br>';
//Array ( [0] => -9 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 8 [8] => 11 [9] => 45 [10] => 67 [11] => 887 [12] => 888 )
print_r($arr);/*** 11、对有序数组进行洗牌操作;(不能直接使用shuffle函数)*/
$arr = range(1, 40, 2);
echo '<br>';
echo '<br>$arr打乱前:';
//$arr打乱前:Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 [5] => 11 [6] => 13 [7] => 15 [8] => 17 [9] => 19 [10] => 21 [11] => 23 //[12] => 25 [13] => 27 [14] => 29 [15] => 31 [16] => 33 [17] => 35 [18] => 37 [19] => 39 )
print_r($arr);
function shuffleDemo($arr) {$resultAry = array();$len = count($arr);while ($len>0) {$index = rand(0, $len-1);$resultAry[] = $arr[$index];array_splice($arr, $index,1);$len--;}return $resultAry;
}
echo '<br>';
echo '<br>$arr打乱后:';
//$arr打乱后:Array ( [0] => 3 [1] => 33 [2] => 11 [3] => 15 [4] => 5 [5] => 39 [6] => 1 [7] => 25 [8] => 35 [9] => 29 [10] => 13 [11] => 27 //[12] => 23 [13] => 7 [14] => 37 [15] => 19 [16] => 9 [17] => 17 [18] => 31 [19] => 21 )
print_r(shuffleDemo($arr));
/*** 12、删除数组中指定位置的元素;(参考unset函数)*/
function deleteAryElement(&$arr, $index){if (!(is_array($arr) && count($arr)>$index)) {return false;}unset($arr[$index]);
}
$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2);
deleteAryElement($arr,2);
echo '<br>';
//Array ( [0] => 888 [1] => -9 [3] => 11 [4] => 5 [5] => 67 [6] => 8 [7] => 4 [8] => 3 [9] => 45 [10] => 6 [11] => 887 [12] => 2 )
print_r($arr);
/*** 13、将数组中素数删除组成新数组*/
function filtFun($val) {//自定义过滤素数函数$flag = true;//判断是否是素数if (is_int($val)) {if ($val<=0) {$flag = false;}for ($i=$val-1;$i>1;$i--) {if ($val%$i==0) {$flag = false;break;}}} else {$flag = false;}return !$flag;
}
$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2,'a');
$rary = array_filter($arr, 'filtFun');
echo '<br>';
//Array ( [0] => 888 [1] => -9 [6] => 8 [7] => 4 [9] => 45 [10] => 6 [13] => a )
print_r($rary);/*** 14、写函数检查数组中是否存在某个元素(不能直接使用in_array)*/
function exsitEle($arr, $value) {if (!(is_array($arr) && count($arr)>0)) {return false;}foreach ($arr AS $key=>$val) {if ($val==$value) {return true;}}return false;
}
$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2,'a',array('a'=>14,'b'=>48));
//boolean true
var_dump(exsitEle($arr, array('a'=>14,'b'=>48)));/*** 15、写函数,向数组最后追加一个元素(不能直接使用array_push)*/
$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2,'a',array('a'=>14,'b'=>48));
$arr[] = 'abcd';
echo '<br>';
//Array ( [0] => 888 [1] => -9 [2] => 1 [3] => 11 [4] => 5 [5] => 67 [6] => 8 [7] => 4 [8] => 3 [9] => 45 [10] => 6
//[11] => 887 [12] => 2 [13] => a [14] => Array ( [a] => 14 [b] => 48 ) [15] => abcd )
print_r($arr);/*** 16、写函数,求数组中所有元素之和(不能直接使用array_sum)*/
$arr = array(888,-9,1,11,5,67,8,4,3,45,6,-102);
function countAry($arr) {if (!(is_array($arr) && count($arr)>0)) {return false;}$sum = 0;foreach ($arr AS $key=>$val) {$sum += $val;}return $sum;
}
echo '<br>';
//927
print_r(countAry($arr));

  php数组功能非常强大,自己对php数组的练习学习。以后也可以在此加深印象,巩固学习!

转载于:https://www.cnblogs.com/age0420/p/3937742.html

php数组练习十六道题相关推荐

  1. php数组填空题,php数组练习十六道题

    /** * 1.写函数创建长度为10的数组.数组中的元素为递增的奇数.首项为1. */ $ary = range(1, 10); //Array ( [0] => 1 [1] => 2 [ ...

  2. JavaScript学习(六十六)—字符串对象常用的属性和方法总结以及数组元素的排序问题

    JavaScript学习(六十六)-字符串对象常用的属性和方法总结以及数组元素的排序问题 学习内容 一.数组去重问题 二.二维数组的定义 三.二维数组的元素操作 四.二维数组的遍历 五.关联数组 六. ...

  3. C语言编程>第二十六周 ⑥ 请补充fun函数,该函数的功能是:按 “0”到 “9”统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。

    例题:请补充fun函数,该函数的功能是:按 "0"到 "9"统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中.注意:不能使用字符串库函数. ...

  4. 从零开始学java(二十六)--多维数组,多维数组存储表格数据

    从零开始学java(二十六)--多维数组 多维数组 多维数组存储表格数据 多维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(学习 ...

  5. C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中

    例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...

  6. C语言编程>第二十六周 ① 函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。

    例题:函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换.形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动. 例如,若a所指数组中的数据依次为:11 22 33 ...

  7. python随机选择一个幸运观众_从十名观众中随机选取8名幸运观众,不能重复选取同一个观众为幸运观众(CPrimerPlus第十六章第五题)...

    其实就是CPrimerPlus第十六章第五题,只不过我把标题写的更生动些啦. 刚开始我理解两次选的人不一样就行了,于是只安排了连续两次选人之间对比,人相同了那么就将第二次选择作废,重来一次,直到选的人 ...

  8. 训练实录 | 湖南大学第十六届程序设计竞赛

    湖南大学第十六届程序设计竞赛 传送门 A - Triangles solved by Micky. 00:38:55(+2) 题意: 水题,给三个点的坐标,判断是(钝角,锐角,直角,非)三角形. #i ...

  9. 【OpenCV十六新手教程】OpenCV角检测Harris角点检测

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/29356187 作者:毛星云(浅墨) ...

最新文章

  1. PHP 和 ASP.NET的优势和弱点
  2. 十行代码实现网页标题滚动效果!
  3. CentOS下Samba文件服务器的安装与配置
  4. gevent版TCP服务器
  5. Spring IOC核心原理分析
  6. SpringCloud学习笔记011---spring-boot-starter-actuator(健康监控)配置和使用
  7. linux mint 安装内核,使用Ukuu在Ubuntu/Linux Mint上安装Linux Kernel 5.0的方法
  8. Glide 4.x之ModelLoader简单分析
  9. 【FPGA教程案例89】编译码2——使用vivado核实现RS信道编译码
  10. 农场周围的道路c语言编程,[蓝桥杯][2013年第四届真题]农场阳光 (C语言)
  11. 4ARM-PEG-DA 4Arm-PEG-ACRL 四臂PEG丙烯酸酯
  12. 厦门情侣必去浪漫的餐厅
  13. 自控力读书笔记 第四章 容忍罪恶: 为何善行之后会有恶行
  14. Java数据结构-Set
  15. Java——Java语言基础
  16. 距离2021年还剩75天,我在想什么?
  17. IntelliJ idea使用
  18. SMA、EMA与双均线策略
  19. Libvirt XML文件详解(一)
  20. C语言 练手代码——(1)棱形

热门文章

  1. 以股票weekday和涨幅关系为例创建dataframe交叉表与透视表
  2. 小蒋搜搜(xp search) 官网
  3. Puppet nginx+Mongrel安装配置篇
  4. 前端点滴(JS进阶)(三)---- JavaScript 两链一包
  5. Maven更换远程仓库
  6. [Jexus系列] 一、安装并运行 Jexus
  7. 2022年山东省职业院校技能大赛高职组“信息安全管理与评估”赛项竞赛规程
  8. pdm软件linux,Persepolis Download Manager(pdm下载器)
  9. NB-IoT贴片式SIM卡引脚定义和尺寸
  10. Redis知识点总结(一)