新浦京81707con > 注册购买 > PHP无限分类实例程序,增删查改

原标题:PHP无限分类实例程序,增删查改

浏览次数:50 时间:2019-08-21

复制代码 代码如下:

实现

例1

<?php
/*
*文件名:linearList.php
* 功用:数据结构线性表的顺序存储达成
* author:黎锦焕
* @copyright:www.drw1314.com
*/
class linearList {
private $arr;
private $length;
const MAXSIZE=100;
/*
*构造函数,判别空表依然飞空表,而且张开实例化
* @param array $arr 输入的数组
* @param int $n 输入数组的长度
* @ruturn void;
*/
function __construct($arr,$n) {
if($n>self::MAXSIZE) {
echo '对不起,数组的长短'.$n.'赶上了内存空间!'.self::MAXSIZE;
} else if($n<0) {
echo '分外,长度无法为负数。';
} else if($n==0) {
echo '<br/>....你创设了一张空表,数老板度为0....<br/><br/>';
$this->arr=$arr;
$this->length=$n;
}else{
echo '<br/>....成功成立一张表....<br/><br/>';
$this->arr=$arr;
$this->length=$n;
}
}
/*
*按位查找,再次来到查找到的值
* @ruturn string;
* @param int $n 查找的岗位
*/
function findValue($n) {
if($n>$this->length||$n<1){
return '输入的职位'.$n.'不准确,请在1到'.$this->length.'的限制内';
}
return '你要找的第'.$n.'位的值为'.$this->arr[$n-1];
}
/*
*按值查找,重临查找到的职分
* @ruturn string;
* @param int $n 查找的值
*/
function findSite($n) {
for($i=0;$i<$this->length;$i ){
if($this->arr[$i]==$n){
$b=$i 1;
return '你要找的值'.$n.'对应的职位为'.$b;
}else{
$v=false;
}
}
if(!$v){
return '你所找的值'.$n.'不设有';
}
}
/*
*在选定的地方处插入有些值
* @ruturn array;
* @param int $i 插入地点
* @param int $v 插入的值
*/
function insertValue($i,$v) {
if($i<1||$i>self::MAXSIZE){
echo '插入的任务'.$i.'不得法,请在1到'.self::MAXSIZE.'的限定内';
return ;
}
for($h=$this->length;$h>=$i;$h--){
$this->arr[$h]=$this->arr[$h-1];
}
if($i>$this->length){
$this->arr[$this->length]=$v;
}else{
$this->arr[$i-1]=$v;
}
$this->length ;
return $this->arr;
}
/*
*在选定的职责删除有些值
* @ruturn array;
* @param int $i 位置
*/
function deleteValue($i) {
if($i<1||$i>$this->length){
echo '选定的地方'.$i.'不科学,请在1到'.$this->length.'的界定内';
return ;
}
for($j=$i;$j<$this->length;$j ){
$this->arr[$j-1]=$this->arr[$j];
}
unset($this->arr[$this->length-1]);
$this->length--;
return $this->arr;
}
function __destruct(){
if($this->length==0){
echo '<br/>...销毁一张空表...<br/>';
}else{
echo '<br/>...成功销毁一张表..<br/>';
}
}
}
//上边是应用案例
$arr=array(10,125,123,1,4);
$n=5;
$linearList=new linearList($arr, $n);
echo $linearList->findValue(5).'<br/>';
echo $linearList->findSite(4).'<br/>';
echo '<pre>';
print_r($linearList->insertValue(20,300));
echo '</pre>';
echo '<pre>';
print_r($linearList->deleteValue(1));
echo '</pre>';

复制代码 代码如下:

 代码如下

你可能感兴趣的稿子:

  • PHP实现的扣除查询算法示例
  • PHP有序表查找之二分查找(折半查找)算法示例
  • PHP落成的扣除查找算法示例
  • php顺序查找和二分查找示例
  • PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
  • PHP有序表查找之插值查找算法示例
  • PHP基于二分法达成数组查找功效示例【循环与递归算法】
  • PHP二分查找算法示例【递归与非递归方法】
  • php数据结构与算法(PHP描述) 查找与二分法查找
  • 风行用php获取GoogleP猎豹CS6值算法,附上php查询PPRADO值代码示例
  • 选取PHP完成二分查找算法代码分享
  • PHP区块查询完结情势深入分析

/*
    冒泡算法(递归完毕)
*/

$yArr    = array(
     1 => array('id'=>'1','parentid'=>0,'name'=>'超级栏目一'),
     2 => array('id'=>'2','parentid'=>0,'name'=>'顶级栏目二'),
     3 => array('id'=>'3','parentid'=>1,'name'=>'二级栏目一'),
     4 => array('id'=>'4','parentid'=>1,'name'=>'二级栏目二'),
     5 => array('id'=>'5','parentid'=>2,'name'=>'二级栏目三'),
     6 => array('id'=>'6','parentid'=>3,'name'=>'三级栏目一'),
     7 => array('id'=>'7','parentid'=>3,'name'=>'三级栏目二'),
     8 => array('id'=>'8','parentid'=>2,'name'=>'二级栏目三'),
 );
 
 /**
  * 获取当前id的子ID
  * @param array $data 原始数组
  * @param int $id 当前id
  * @param int $layer 当前层级
  */
 function genCate($data, $pid = 0, $level = 0)
 {
     if($level == 10) break;
     $l        = str_repeat("    ", $level);
     $l        = $l.'└';
     static $arrcat    = array();
     $arrcat    = empty($level) ? array() : $arrcat;
     foreach($data as $k => $row)
     {
         /**
          * 假设父ID为近些日子传播的id
          */
         if($row['parentid'] == $pid)
         {
             //假诺当前遍历的id不为空
             $row['name']    = $l.$row['name'];
             $row['level']    = $level;
             $arrcat[]    = $row;
             //var_array($arr);
             genCate($data, $psiff, $row['id'], $level 1);//递归调用
         }
     }
     return $arrcat;
 }
 
 $carr    = genCate($yArr);
 echo "<select>";
 foreach($carr as $row)
 {
     echo "<option value={$row['id']}>";
     echo $row['name'];
     echo "</option>";
 }
 echo "</select>";

function maoPao($array, $index=0)
{
    $count = count($array);
    if(($count-1) <= $index)
        return $array;

注:因为是无比次的调用,所以小编加了个推断,在层级$level=10的时候让她跳出。未有哪个常常网址会放超越10层的

    for($i=$count-1; $i>$index; $i-- )
    {
        if($array[$i] < $array[$i-1])
        {
            $tmp = $array[$i];
            $array[$i] = $array[$i-1];
            $array[$i-1] = $tmp;
        }
    }
    $index ;
    return maoPao($array, $index);
    //return maoPao($array, $index );
}

目录结构吧。

    $arr = array(12,4,3,1,9,5,6,8,7);
    var_dump(maoPao($arr));

试行到static变量后,判别下当前层级,假设层级为0,那么表示那是最高端菜单,须要清空$arrcate的多少再一次注解

结果:

例2

复制代码 代码如下:

 代码如下

Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 [7] => 9 [8] => 12 )

//大家建三个表"class"
CREATE TABLE `class` (
`id` int(11) NOT NULL auto_increment COMMENT '分类id',
`f_id` int(11) NOT NULL COMMENT '父id',
`name` varchar(25) collate gbk_bin NOT NULL COMMENT '分类名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_bin AUTO_INCREMENT=1 ;

问题:

代码

在品尝这么些完毕的时候蒙受了二个主题素材,还未缓慢解决。
在这里:

 代码如下

复制代码 代码如下:

< ?php 

$index ;
return maoPao($array, $index);
//return maoPao($array, $index );

header("Content-type:text/html;charset=utf-8"); 

/******************
    假使直白动用第三行,并非先$index ,再ruturn的话就能进入死循环.小编在函数的始发出口$index,都以0,就是说$index 后传递给递归函数的参数不是$index 应该的结果(即$index=$index 1).
    maoPao($array, $index )不是$index ; return maoPao($array, $index);的粗略写法吗,为什么二种结果分裂样,希望能获得各位的解答。
******************/

$db=new mysqli("localhost","root","","news_php100") ; 
//实例化贰个数据库连接。使用这一个前肯定要有限支撑已经加载了mysqli类库,
或者用mysql_connect那一个方法连接。 

补充:

if(mysqli_connect_errno()){

解答:

echo "链接退步:".mysqli_connect_error();

复制代码 代码如下:

exit(); } 

$index 与 $index两个的区分, $index 被称作后增量, $index被叫作前增量, 就算最终的$index的结果都以会 1。 但传递变量的时候会有差异的地点。

$db->query("set names utf8");

$index = 1;
$m = $index ;
echo $index.'<br/>';  //结果为2
echo $m.'<br/>';      //结果为1. 因为是后增量, 会先把开端的$index=1 赋给$m,然后$index自增1;

$result=$db->query("select name from class where f_id=0"); 
//查找f_id=0的归类,也等于探寻每一个大类。

$index = 1;
$n = $index;
echo $index.'<br/>';  //结果为2
echo $n;              //结果为2.因为是前增量, 会先实行$index 1的操作, 再赋值给$n;

while($row=$result->fetch_assoc()){

那几个也许不太好记住, 所以在运用的时候势供给留心, 在上边的标题中小编正是忽视了那几个标题造成了$indexInfiniti传递0值使得递归锁死。

echo $row['name']."< br>"; //那样就把每一个大类循环出来了。

您大概感兴趣的小说:

  • php消除Joseph环示例
  • Joseph环难题的PHP完结使用PHP数组内部指针操作函数
  • php落成Joseph难题的措施小结
  • phpJoseph难点化解有关镇压犯人的算法
  • 关于PHP递归算法和利用措施介绍
  • PHP递归算法的详细示例解析
  • php全排列递归算法代码
  • PHP使用递归算法特别遍历数组示例
  • PHP二分查找算法示例【递归与非递归方法】
  • php得到文件夹下全体文件的递归算法的总结实例
  • PHP基于递归达成的Joseph环算法示例

}

本文由新浦京81707con发布于注册购买,转载请注明出处:PHP无限分类实例程序,增删查改

关键词: 新浦京81707con

上一篇:新萄京娱乐场国际品牌:你真的懂javascript中的,

下一篇:没有了