php数组填空题,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 ‘
‘;
//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 ‘
最大数是:‘.$max . ‘,其下标是:‘ . $index;
/* $mval = max($arr);
echo ‘
‘;
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 ‘
‘;
//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 ‘
‘;
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 ‘
‘;
//最大数是: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 ‘
‘;
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 ‘
‘;
//Array ( [a] => 123 [b] => 1234 [os] => linux [db] => mysql [language] => php [server] => nginx )
print_r($arr1+$arr2);//$arr1会覆盖$arr2中相同键值,运算是从右至左,所以左边的覆盖右边
echo ‘
‘;
//boolean false
var_dump(array_combine($arr1,$arr2));//boolean false
echo ‘
‘;
//Array ( [a] => 123 [b] => 1256 [os] => linux [db] => mysql [language] => php [server] => nginx )
print_r(array_merge($arr1,$arr2));//$arr1和$arr2中的相同的元素被后一个$arr2的覆盖
echo ‘
‘;
//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 ‘
‘;
print_r($ary); */
for ($i=0;$i
for ($j=$i+1;$j
if($ary[$i]
$temp = $ary[$i];
$ary[$i] = $ary[$j];
$ary[$j] = $temp;
}
}
}
echo ‘
‘;
//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
if ($ary[$index]>=$val){
$endAry[$index++] = $val;
for($i = $index;$i
$endAry[$i] = $ary[$i-1];
}
break;
} else {
$endAry[$index] = $ary[$index];
}
$index++;
}
return $endAry;
}
echo ‘
‘;
//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
for ($j=$len-1; $j>$i; $j--) {
if ($arr[$j]
$temp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $temp;
}
}
}
echo ‘
‘;
//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
for ($j=$i+1; $j
if ($arr[$j]
$temp = $arr[$j];
$arr[$j] = $arr[$i];
$arr[$i] = $temp;
}
}
}
echo ‘
‘;
//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 ‘
‘;
echo ‘
$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 ‘
‘;
echo ‘
$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 ‘
‘;
//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 ‘
‘;
//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 ‘
‘;
//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 ‘
‘;
//927
print_r(countAry($arr));
php数组功能非常强大,自己对php数组的练习学习。以后也可以在此加深印象,巩固学习!
原文:http://www.cnblogs.com/age0420/p/3937742.html
php数组填空题,php数组练习十六道题相关推荐
- php数组练习十六道题
<?php /*** 1.写函数创建长度为10的数组.数组中的元素为递增的奇数.首项为1.*/ $ary = range(1, 10); //Array ( [0] => 1 [1] =& ...
- 【100题】第三十六 比赛淘汰问题(谷歌笔试)
一,题目:(谷歌笔试) n支队伍比赛,分别编号为0,1,2--n-1,已知它们之间的实力对比关系,存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j的队伍中更强的一支.所以w[i ...
- codeforces水题100道 第十六题 Codeforces Round #164 (Div. 2) A. Games (brute force)
题目链接:http://www.codeforces.com/problemset/problem/268/A 题意:足球比赛中如果主场球队的主场球衣和客队的客队球衣颜色一样,那么要求主队穿上他们的可 ...
- 十二届蓝桥杯省赛B组C++解析(填空题部分)
十二届蓝桥杯省赛B组C++解析(填空题部分) 目录 十二届蓝桥杯省赛B组C++解析(填空题部分) A:空间 B:卡片 C:直线 D:货物摆放 E:路径 A:空间 该题是一道计算机基础原理题,这里需要了 ...
- Java_数组练习答案_Java数组练习题带答案.doc
<Java数组练习题带答案.doc>由会员分享,可在线阅读,更多相关<Java数组练习题带答案.doc(11页珍藏版)>请在人人文库网上搜索. 1.一 填空题1) 数组的元素通 ...
- 2012二级c语言上机,2012全国计算机等级考试-二级C语言-上机考试-填空题-分类总结...
<2012全国计算机等级考试-二级C语言-上机考试-填空题-分类总结>由会员分享,可在线阅读,更多相关<2012全国计算机等级考试-二级C语言-上机考试-填空题-分类总结(3页珍藏版 ...
- java数组中包含元素_Java中声明数组时,包括数组的名字、数组中包含的元素的 。 (5.0分)_学小易找答案...
[简答题]3,单冲压片机的安装程序? [判断题]continue语句只用于循环语句中,它起到终止本次循环,返回到循环开始处的作用. (5.0分) [判断题]default在switch选择结构中是必需 ...
- java如何遍历字符串数组_java遍历字符串数组
java中关于变量.数组的综合练习题_IT/计算机_专业资料.java中关于变量.数组的综合练习题,附有答案. 一.多项选择题(共1道小题,共5.0分) 1. 下列变量的...... Java数组练习 ...
- 二、全国计算机三级数据库考试——理论知识总结(填空题)
上一篇博客:一.全国计算机三级数据库考试--理论知识总结(选择题)_简时刻的博客-CSDN博客 说明:红色字为三级数据库考试中需要输入的答案,填空题在考试中一共15道题,一题2分,一共30分. IDE ...
最新文章
- java 矩阵_(JAVA)计算机图形学与矩阵
- 如何改变X:\Users\XXX的用户名称
- aspnetcore 应用 接入Keycloak快速上手指南
- 进程,线程和协程 并行与并发
- 语言阿克曼函数_函数式的动态规划
- 洛谷——P1867 【Mc生存】经验值
- 利用Word2010在博客园发布文章入门
- 使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库
- 项目管理之我见:程序开发步骤
- linux高级编程进程,linux高级编程(五、进程)
- android 刷路由器,荣耀立方WS860s路由器完整刷机包怎么使用?荣耀立方刷机图文教程...
- 在vue中使用echarts实现飞机航线 水滴图 词云图
- warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
- 像素、英寸、厘米的换算
- 动手学树莓派第1章:先唠叨两句
- 算法导论------渐近记号Θ、Ο、o、Ω、ω详解
- 大数据量分页存储过程效率测试附代码(转http://www.cnblogs.com/lli0077/archive/2008/09/03/1282862.html)...
- ArrayList 和 Vector 的区别是什么?
- itextsharp 获取文本_利用iTextSharp提取PDF文件中的文本内容
- 六、DOM(上) - 章节课后练习题及答案
热门文章
- 经典兔子问题python视频_【Python】【demo实验14】【练习实例】【斐波那契数列】【经典兔子生小兔子问题】...
- BAT careers
- IDEA下载与安装(IDEA2021.2.2版本)
- 给button加上手形
- 「BUAA SE Pair Programming Work」软工结对编程博客
- 计算机应用基础与实训教程word2003文字处理软件 教学目标,计算机应用基础与实训教程第3章.ppt...
- MySQL查询一个表的前25%的数据
- 简易QQ列表展开收缩
- 混淆工具JavaScript obfuscator中文帮助文档
- Bootstrap快速入门(含旅游网案例)