php实现两表合并成新表并且有序排列的方法
本文实例讲述了php实现两表合并成新表并且有序排列的方法。分享给大家供大家参考。
具体实现方法如下:
<?php
/**
la(3,5,8,11)
lb(2,6,8,9,11,15)
合并为lc,有序排列。
用php实现,不能用sort之类的函数!!!!
**/
classunion{
var$lista=array();
var$listb=array();
var$listc=array();
functiongetlenght($arr){//获得表长度
returncount($arr);
}
functiongetelement($arr,$n){//获取表中第n个元素,返回
return$e=$arr[$n]?$arr[$n]:'';
}
functionlistinsert($arr,$e){//表末尾插入元素
$arr[]=$e;
return$arr;
}
}
$phpig=newunion();
$lista=$phpig->lista=array(3,5,8,11);
$listb=$phpig->listb=array(2,6,8,9,11,15);
$listc=$phpig->listc;
$lena=$phpig->getlenght($lista);//取得表大小
$lenb=$phpig->getlenght($listb);
$i=$j=0;
while($i<$lena&&$j<$lenb){
$ea=$phpig->getelement($lista,$i);
$eb=$phpig->getelement($listb,$j);
if($ea<=$eb){
$listc=$phpig->listinsert($listc,$ea);
++$i;
}else{
$listc=$phpig->listinsert($listc,$eb);
++$j;
}
}
while($i<$lena){
$ea=$phpig->getelement($lista,$i);
$listc=$phpig->listinsert($listc,$ea);
++$i;
}
while($j<$lenb){
$eb=$phpig->getelement($listb,$j);
$listc=$phpig->listinsert($listc,$eb);
++$j;
}
print_r($listc);
?>
希望本文所述对大家的PHP程序设计有所帮助。