第四章 补充案例
案例4-1 定义数组
一、案例描述
1、考核知识点
定义数组
2、练习目标
熟练掌握数组定义的各种方法
指针与二维数组3、需求分析
在PHP开发中,经常会使用数组。那么如何定义一个数组呢,在PHP中定义一个数组,通常有两种方式,一种是直接给数组中的元素赋值,另一种是使用array()函数定义数组。下面我们通过这两种方式对数组进行定义。
4、设计思路(实现原理)
1)使用[]直接给数组中的元素进行赋值,并将数组输出。
2)使用array()函数定义数组,并将数组输出。
二、案例实现
1、编写定义数组的两种方式,代码如下:
<?php
//使用[]直接赋值方式定义数组
//定义一个键值数组
$arr1['name'] = 'li';
$arr1['age'] = 20;
$arr1['gender'] = 'male';
var_dump($arr1);
echo '<br>';
//定义一个下标数组
$arr2[] = 'li';
$arr2[] = 20;
$arr2[] = 'male';
var_dump($arr2);
echo '<br>';
//通过这种方式不能定义一个空数组,因为它本身就是在定义数组的某个元素
$arr3[] = '';
var_dump($arr3);
echo '<hr>';
//使用array()函数方式定义数组
//定义一个键值数组
$arr4 = array('name'=>'li','age'=>20,'gender'=>'male');
var_dump($arr4);
echo '<br>';
//定义一个下标数组
$arr5 = array('li',20,'male');
var_dump($arr5);
echo '<br>';
//定义一个空数组
$arr6 = '';
var_dump($arr6);
运行程序,结果如下图所示:
三、案例总结
1、[] 赋值方式除了不能定义空数组外,其他类型的数组都能定义。
2、使用array()函数方式定义数组还是使用[]这种方式定义数组看个人习惯。
案例4-2 输出数组
一、案例描述
1、考核知识点
输出数组
2、练习目标
熟练掌握数组输出的各种使用方法
3、需求分析
在PHP开发中,经常会使用数组。如果要查看整个数组的信息,用每个元素的键获取值就会使代码非常繁琐。为此,PHP提供了print_r()和var_dump()函数,专门用于输出数组中的所有元素。
我们举例假设:现在有一个一维数组$arr,分别使用print_r(),var_dump()进行输出,看看它们不同的输出效果。
4、设计思路(实现原理)
1)编写一个一维的数组$arr。
2)使用print_r()输出数组。
3)使用var_dump()数组数组。
二、案例实现
1、编写程序输出数组,代码如下:
<?php
$arr = array('zhang', 'wang', 'li', 'zhao');
//数组常用的输出的方式一:print_r
print_r($arr);
echo '<hr>';
//数组常用的输出的方式二:var_dump
var_dump($arr);
运行程序,结果如下图所示:
三、案例总结
1、print_r()输出的数组键值形式的。
2、var_dump()输出的数组也是键值形式的,其中还把值的数据类型和字符串长度也显示出来了。
3、在PHP实际开发中,使用哪种格式的输出方式,请按实际情况选择。
案例4-3 current()
一、案例描述
1、考核知识点
current()
2、练习目标
熟练掌握current()指针函数的用法
3、需求分析
在程序开发中,经常需要对数组中的元素进行访问,在访问的过程中需要用到数组指针。数组指针用于指向数组中的某个元素,默认情况下指向数组的第一个元素,当使用for和foreach遍历数组后,数组的指针又指向哪个元素呢?
4、设计思路(实现原理)
1)编写一个一维数组。
2)使用current()数组指针函数获得当前指针指向哪个元素,并将其输出。
3)分别使用for和foreach遍历数组。
4)再次使用current()数组指针函数获得当前指针指向哪个元素,并将其输出。
二、案例实现
1、编写程序输出数组,代码如下:
<?php
$arr = array('li', 'male',20);
//查看当前数组的指针指向情况
var_dump(current($arr));
echo '<hr>';
//使用for遍历数组
for($i=0; $i<count($arr); ++$i){
echo $arr[$i], ' ';
}
echo '<br>';
//使用for遍历完数组后数组的指针指向情况
var_dump(current($arr));
echo '<hr>';
//使用foreach遍历数组
foreach($arr as $v){
echo $v, ' ';
}
echo '<br>';
//使用foreach遍历完数组后数组的指针指向情况
var_dump(current($arr));
运行程序,结果如下图所示:
三、案例总结
1、for循环不会影响指针的位置。
2、使用foreach遍历数组后,结束后,指针不再指向数组的元素。
案例4-4 数组排序函数
一、案例描述
1、考核知识点
数组排序函数
2、练习目标
熟练掌握数组排序函数的使用
3、需求分析
数组在PHP程序中应用非常的广泛。在使用数组时,经常需要对数组进行排序操作,因此灵活的使用数组排序函数对实际开发很重要。
现在举例说明:对一个二维数组$person进行按照它的名字字段进行排序。
4、设计思路(实现原理)
1)编写一个array_sort函数,并带有形参要排序的数组$arr,排序依据列$row,排序的顺序正序或逆序。
2)将待排序数组$arr的排序依据列作为临时定义数组$arr_temp的键名。
3)然后按照键名对临时数组$arr_temp排序,并保持索引关系,返回排序结果。
4)编写一个测试的数组$person,调用函数array_sort,并输出返回结果。
二、案例实现
1、排序函数array_sort,代码如下:
<?php
/**
*根据某列对二维数组进行排序
*@param $arr array 要排序的数组
*@param $row string 排序依据列
*@param $type string asc表示正序,默认值,desc表示逆序
*/
function array_sort($arr,$row,$type = 'asc'){
$arr_temp = array();
//将排序依据列作为数组的键名
foreach($arr as $v){
$arr_temp[$v[$row]] = $v;
}
//然后按照键名对数组排序,并保持索引关系
if($type == 'desc'){
krsort($arr_temp);
} else{
ksort($arr_temp);
}
//返回排序结果
return $arr_temp;
}
2、测试数组,代码如下:
<?php
$person = array(
array('id' =>2, 'name' => 'zhangsan', 'age' => 23),
array('id' => 5, 'name' => 'lisi', 'age' => 28),
array('id' => 3, 'name' => 'apple', 'age' => 17)
);
//调用实例
$person = array_sort($person,'name');
print_r($person);
运行程序,结果如下图所示:
三、案例总结
在PHP程序开发过程中,运用好数组排序函数,能起到事半功倍的效果。
案例4-5 冒泡排序
一、案例描述
1、考核知识点
冒泡排序
2、练习目标
掌握冒泡排序的算法原理
3、需求分析
排序算法是为了让无序的数据组合变成有序的数据组合,有序的数据组合最大的优势是在于当你进行数据定位和采用时,会非常方便,因为这个数据是有序的,从而在代码设计的是偶会让你避免很多不必要的麻烦,因为无序数据你在进行推断数据前后关系的时候会显示很繁琐,而冒泡排序是计算机科学领域的较简单的排序算法。在实际中使用较少。
现在举例说明:对一个无序数组$list_old进行冒泡排序。
4、设计思路(实现原理)
1)比较相邻的元素,如果第一个比第二个大,就交换他们两个。
2)对每一个相邻元素同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3)针对所有的元素重复以上的步骤,除了最后一个。
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
二、案例实现
1、定义一个冒泡函数bubbleSort,代码如下:
<?php
/**
* 冒泡排序
* @param &$list array 待排序序列
* @return bool
*/
function bubbleSort(& $list) {
//外层循环控制需要比较的轮数
for ($i=1, $len=count($list); $i<$len; ++$i) {
//内层循环控制参与比较的元素
//以前一个元素为标准
for ($j=0; $j<$len-$i; ++$j) {
//比较索引值为:$j与$j+1的元素比较
if ($list[$j] > $list[$j+1]) {
//交换
$tmp = $list[$j];
$list[$j] = $list[$j+1];
$list[$j+1] = $tmp;
}
}
}
return true;
}
2、定义测试数组,代码如下:
$list_old = array(35, 23, 14, 89, 3, 67, 23);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论