您的位置:首页 > 其它

练习笔记4

2012-06-09 09:18 106 查看
对函数进行重构:

<?php
/*一个功能,可以分解成很多小的功能,可以一直细分下去,只到没有过分重复的代码。
重构,就是把一个小的功能,,拎出来,形成一个独立的服务。
这个函数虽然只有两行,但也确实是提供了一个服务。
原则: 重构一方面是重组代码;另一重要方面是设计的的重构
原则:require 的文件,所提供的只是服务,以函数形式提供的服务,不能直接利用代码
原则: require 在 99% 的情况下都只会出现在php文件的最前面,不会出现在正文中,更不会出现在函数体中。
arr使用了全局变量
接下来再弄那个html语言
ok,html语言终于弄完,这里是利用函数传参数做到的
*/
function isNotExist(){
echo "Does not exist<br/>";
echo "<a href=\"http://localhost/Reconstruction/Reconstruction002/all.php\">重新输入</a>";
}
$arr=array(
array("name"=>"张三","age"=>12,"sex"=>"男"),
array("name"=>"李四","age"=>25,"sex"=>"男"),
array("name"=>"王五","age"=>18,"sex"=>"男"),
array("name"=>"李利","age"=>16,"sex"=>"女"),
array("name"=>"陈明","age"=>25,"sex"=>"男"),
array("name"=>"张晓","age"=>25,"sex"=>"女"),
array("name"=>"李明","age"=>15,"sex"=>"男"),
array("name"=>"赵亮","age"=>25,"sex"=>"男"),
array("name"=>"张月","age"=>22,"sex"=>"男"),
array("name"=>"王青","age"=>21,"sex"=>"女")
);

$b="";
$d=0;

function name_age_sex($num){
global $b;
global $d;
global $arr;
$d = $d+1;
$a = "<tr>
<td>".$d."</td>
<td>".$arr[$num]['name']."</td>
<td>".$arr[$num]['age']."</td>
<td>".$arr[$num]['sex']."</td>
</tr>";
return $a;
}

//因为第13行的变量而忙乎了很长时间
//或者说是函数吧,将函数也用引用的方式,有时不同函数引用该函数,而不引用你的而你所写的函数
//. 将数据以表格形式返回
function get_all(){
global $b;
global $d;
global $arr;
foreach($arr as $c=>$v){
$a=name_age_sex($c);
$b=$b.$a;
/*$d = $d+1;
$a = "<tr>
<td>".$d."</td>
<td>".$arr[$c]['name']."</td>
<td>".$arr[$c]['age']."</td>
<td>".$arr[$c]['sex']."</td>
</tr>";
$b = $b.$a;
*/
}
if($b==""){
isNotExist();
}
return $b;
}
//提供一个方法,要求可以返回指定岁数的记录
function get_by_age($age){
global $b;
global $d;
global $arr;

foreach($arr as $c=>$v){

if($arr[$c]['age']==$age){
$a=name_age_sex($c);
$b=$b.$a;
}
}

if($b==""){
isNotExist();
}
return $b;
}
//提供一个方法,
//要求可以返回某一个岁数范围内的所有记录(两个参数,代表年龄范围)
function get_between_ages($age1,$age2){
global $arr;
global $b;
global $d;
foreach($arr as $c=>$v){

if($arr[$c]['age']>=$age1&&$arr[$c]['age']<=$age2){
$a=name_age_sex($c);
$b=$b.$a;
}
}

if($b==""){
isNotExist();
}
return $b;
}
//提供一个方法,要求返回指定姓名的数据
function get_by_name($name){
global $arr;
global $b;
global $d;
foreach($arr as $c=>$v){
if($arr[$c]['name']==$name){
$a=name_age_sex($c);
$b=$b.$a;
}
}
if($b==""){
isNotExist();
}
return $b;
}
//提供一个方法,要求返回指定年龄和性别的数据
function get_both_age_sex($age,$sex){
global $arr;
global $b;
global $d;
foreach($arr as $c=>$v){

if($arr[$c]['age']==$age&&$arr[$c]['sex']==$sex){
$a=name_age_sex($c);
$b=$b.$a;
}
}
if($b==""){
isNotExist();
}
return $b;
}
//提供一个方法,要求返回指定性别的年龄总和
function get_by_sexs($sex){
global $arr;
global $b;
global $d;

foreach($arr as $c=>$v){
if($arr[$c]['sex']==$sex){
$d=$arr[$c]['age'];
$b=$b+$d;
}
}
if($b==""){
isNotExist();
}
return $b;
}
//提供一个方法,要求返回指定性别的数据
function get_by_sex($sex){
global $arr;
global $b;
global $d;
foreach($arr as $c=>$v){

if($arr[$c]['sex']==$sex){
$a=name_age_sex($c);
$b=$b.$a;
}
}
if($b==""){
isNotExist();
}
return $b;
}
//提供一个方法,要求返回指定(姓氏)的数据
function get_by_firstname($firstname){
global $arr;
global $b;
global $d;
foreach($arr as $c=>$v){
$e=$arr[$c]['name'];

$f=substr($e,0,2);

if($f==$firstname){
$a=name_age_sex($c);
$b=$b.$a;
}
}
if($b==""){
isNotExist();
}
return $b;

}
//汉字相当于两个字母
//提供一个方法,返回姓氏最多的数据
function get_mostname(){
global $arr;
global $b;
global $d;
$arra=array();
$array=array();
$zf="";
foreach($arr as $c=>$v){
$e=$arr[$c]['name'];
$f=substr($e,0,2);
$b=$f.$b;
}
foreach($arr as $c=>$v){
$e=$arr[$c]['name'];
$f=substr($e,0,2);
$m=substr_count($b,$f);//字符出现次数
array_push($arra,$m);
}

for($m=0;$m<count($arra);$m++){
for($i=count($arra);$i>0;$i--){
for($j=0;$j<=count($arra);$j++){
if($arra[$i]>$arra[$j]){
unset($arra[$j]);
}
}
}
}
array_pop($arra);//移除最后个单元

foreach($arra as $c=>$v){
array_push($array,$c);//位置
}

//var_dump($arra);

foreach($array as $c=>$v){
$d=$d+1;
$z="<tr>
<td>".$d."</td>
<td>".$arr[$v]['name']."</td>
<td>".$arr[$v]['age']."</td>
<td>".$arr[$v]['sex']."</td>
</tr>";
$zf=$zf.$z;
}
if($zf==""){
isNotExist();
}
return $zf;
}
//提供一个方法,返回名称中包含指定字符的数据
function get_by_word($word){
global $arr;
global $b;
global $d;
foreach($arr as $c=>$v){
$e=$arr[$c]['name'];
for($i=0;$i<strlen($e);$i++){
$f=substr($e,$i,2);

if($f==$word){
$a=name_age_sex($c);
$b=$b.$a;
}
}
}
if($b==""){
isNotExist();
}
return $b;

}
//提供一个方法,返回指定性别的人记录,在指定年后的年纪的数据
function get_between_sex_year($sex,$year){
global $arr;
global $b;
global $d;
foreach($arr as $c=>$v){
$age=$arr[$c]['age'];
if($arr[$c]['sex']==$sex){
$number=idate("Y")-$year;
if($number>$age){
$a=name_age_sex($c);
$b=$b.$a;
}
}
}
if($b==""){
isNotExist();
}
return $b;

}

//提供一个方法,返回数据记录,在名称后面都加上"先生"或"小姐"
function get_both_miss_mr(){
global $arr;
global $b;
global $d;

foreach($arr as $c=>$v){
$d=$d+1;

if($arr[$c]['sex']=="男"){
$a="<tr>
<td>".$d."</td>
<td>".$arr[$c]['name']."先生</td>
<td>".$arr[$c]['age']."</td>
<td>".$arr[$c]['sex']."</td>
</tr>";
$b=$b.$a;
}elseif($arr[$c]['sex']=="女"){
$a="<tr>
<td>".$d."</td>
<td>".$arr[$c]['name']."小姐</td>
<td>".$arr[$c]['age']."</td>
<td>".$arr[$c]['sex']."</td>
</tr>";
$b=$b.$a;
}
}
if($b==""){
isNotExist();
}
return $b;
}
//提供一个方法,返回按年龄排序后的记录
function get_order_age(){
global $arr;
global $b;
global $d;
$array=array();
foreach($arr as $c=>$v){
$a=$arr[$c]['age'];
array_push($array,$a);
}
asort($array);

foreach($array as $c=>$v){
$a=name_age_sex($c);
$b=$b.$a;
}
if($b==""){
isNotExist();
}
return $b;
}
//提供一个方法,返回数据,姓氏一样的挨到一起
function get_order_firstname(){
global $arr;
global $b;
global $d;
$array=array();

foreach($arr as $c=>$v){
$a=$arr[$c]['name'];
array_push($array,$a);
}
asort($array);
foreach($array as $c=>$v){
$a=name_age_sex($c);
$b=$b.$a;
}
if($b==""){
isNotExist();
}
return $b;

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: