Rumah pembangunan bahagian belakang tutorial php 无限分类与树型论坛的实现方法_PHP

无限分类与树型论坛的实现方法_PHP

Jun 01, 2016 pm 12:34 PM
order Pengelasan capai kaedah tidak terhad forum

无限分类与树型论坛的实现方法
――浮点型字段排序法
Joe Teng 2005.6.12

在此我不想讨论其他实现方法的利与弊。
既然是使用字段排序,那么我们便设一个名为order的字段。问题是,在这里是使用整数还是使用浮点数类型呢?考虑到会有在两个连续order值中间插入新值的可能,自然是需要使用浮点类型了。
建一个menus表,我们还需要以下字段:
id : 类别编号
mainid : 主分类编号,但不作具体分类使用。如果在树型论坛里,它代表的是主题id
parentid : 父类编号
level : 类别级别,作用其实是方便显示的时候作其他处理
info : 类别名称等。
由此可以得到menus的表结构:
CREATE TABLE `menus` (
`id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`mainid` INT( 10 ) UNSIGNED NOT NULL ,
`parentid` INT( 10 ) UNSIGNED NOT NULL ,
`order` FLOAT UNSIGNED NOT NULL ,
`level` SMALLINT( 5 ) UNSIGNED NOT NULL ,
`info` VARCHAR( 128 ) NOT NULL ,
INDEX ( `mainid` , `parentid` , `order` , `level` ) ,
UNIQUE (
`id`
)
) TYPE = MYISAM ;

很容易可以看出,输入的时候是如此简单便实现树结构了:
SELECT * FROM `menus` ORDER BY `mainid` ASC, `order` ASC ;
前提是添加类别的时候,order能正确排序。

添加根分类:
很简单,取得上一个主类的mainid, 如A_mainid,则新根分类的mainid则为A_mainid + 1。parentid 为 0 , order 为0, level也为0, info则自行设定。

添加子分类:
核心思想是,取得新增子分类的前一个分类的order以及它后一个分类的order。
取得前一个分类的order是这里的难点,因为涉及到同级与非同级的情况。非同级的情况很简单,新增别类的前一个order其实就是它的父类的order。如果有同级分类,情况就很复杂了,因为它前面的同级分类有可能会拥有子分类,子分类下又可能还会有子分类,如此下来,要取得前一个order就很难了。
解决的办法有两个:
1.取得新增类同级的前一个类别,如类别A的ID,使用递归的方法,直到取得A类别下最后最小分类的order,那便是要新增分类的前一个order了。这种方法的缺点是,如果A类别下有很多子分类,那么递归需要一定的时间。这种方法适用于普通的分类处理,不适用于树型论坛。不过总体来说,因为是添加类别的时候才使用递归,输出类别的时候跟前面一样,效率还是很高的。
2.作一个记录,记录着与A有关联的最后order。于是我们就需要增加一个表,建利关系树。这种关系树做起来很简单。表结构如下:
CREATE TABLE `menu_tree` (
`mainid` int(10) unsigned NOT NULL default '0',
`tree` text NOT NULL,
`order` float unsigned NOT NULL default '0',
KEY `mainid` (`mainid`,`order`),
FULLTEXT KEY `tree` (`tree`)
) TYPE=MyISAM;
(构建方式请看我后面给出的源码)
取得前一个order之后,要取得后一个order就很简单了。取同mainid下大于前一个order的最小order便是了。如果存在后一个order,那么新增order就取前一个order与后一个order的平均值。如果不存在后一个order,那说明新增类别是main下的最小order,取大于前一个order的最小整数就行了。

主要实现方法便如上面说的。

处理方法


/*

* ID: class FreeRoad

* Author: Joe Teng

* Notice: Infinite category maker.

*/



$arrDatabase = array

(

    
"host" => 'localhost', "user" => 'root', "password" => '123456', "dbname" => 'test'

);



$resDbc = mysql_connect ( $arrDatabase["host"], $arrDatabase["user"], $arrDatabase["password"] );

mysql_select_db( $arrDatabase['dbname'] );



if ( !
class_exists ( "FreeRoad" ))

{

    class
FreeRoad

    
{

        var
$resDbc ;

        var
$strDatabase ;

        var
$strMenuTable ;

        var
$strMenuTreeTable ;



        var
$strFiled_id       = 'id' ;

        var
$strFiled_mainid   = 'mainid' ;

        var
$strFiled_parentid = 'parentid' ;

        var
$strFiled_order    = 'order' ;

        var
$strFiled_level    = 'level' ;



        function
FreeRoad ( $resDbc , $strDatabase , $strMenuTable , $strMenuTreeTable , $arrSetFileds = array() )

        {

            
$this->resDbc           = $resDbc ;

            
$this->strDatabase      = $strDatabase;

            
$this->strMenuTable     = $strMenuTable ;

            
$this->strMenuTreeTable = $strMenuTreeTable ;

            

            if (
sizeof ( $arrSetFileds ) > 0 )

            {

                
$this->strFiled_id       = $arrSetFileds['id'] ;

                
$this->strFiled_mainid   = $arrSetFileds['mainid'] ;

                
$this->strFiled_parentid = $arrSetFileds['parentid'] ;

                
$this->strFiled_order    = $arrSetFileds['order'] ;

                
$this->strFiled_level    = $arrSetFileds['level'] ;

            }

        }

        

        function
get_new_mainid ()

        {

            
mysql_select_db ( $this->strDatabase , $this->resDbc ) ;

        

            
$strQuery  = " SELECT `$this->strFiled_mainid`  

                           FROM `$this->strMenuTable`  

                           WHERE `$this->strFiled_parentid` = 0

                           ORDER BY `$this->strFiled_id` DESC LIMIT 0 , 1 "
;

            
$resResult = mysql_query ( &$strQuery , $this->resDbc ) ;

            while (
$arrRow = mysql_fetch_array ( $resResult ) )

            {

                
$intLastedMainId = $arrRow[0] ;

            }

            
$intLastedMainId = intval ( $intLastedMainId );

            
mysql_free_result ( $resResult ) ;

            return
$intLastedMainId + 1 ;

        }

        

        function
get_level_lastest_id ( $intParentId )

        {

            
mysql_select_db ( $this->strDatabase , $this->resDbc ) ;

            
$strQuery  = " SELECT `$this->strFiled_id`  

                           FROM `$this->strMenuTable`  

                           WHERE `$this->strFiled_parentid` = $intParentId

                           ORDER BY `$this->strFiled_id` DESC LIMIT 0 , 1 "
;

            
$resResult = mysql_query ( &$strQuery , $this->resDbc ) ;

            while (
$arrRow = mysql_fetch_row ( $resResult ) )

            {

                
$intLevelLastestId = $arrRow[0] ;

            }

            
mysql_free_result ( $resResult ) ;

            return
$intLevelLastestId ;

        }

        

        function
get_level_lastest_order ( $intParentId )

        {

            
mysql_select_db ( $this->strDatabase , $this->resDbc ) ;

            
$strQuery  = " SELECT `$this->strFiled_order`  

                           FROM `$this->strMenuTable`  

                           WHERE `$this->strFiled_id` = $intParentId "
;

            
$resResult = mysql_query ( &$strQuery , $this->resDbc ) ;

            while (
$arrRow = mysql_fetch_row ( $resResult ) )

            {

                
$floSelectItemOrder = $arrRow[0] ;

            }

            
mysql_free_result ( $resResult ) ;



            
$strQuery  = " SELECT `$this->strFiled_order`  

                           FROM `$this->strMenuTreeTable`  

                           WHERE BINARY ( `tree`) LIKE '%|$intParentId|%'

                           ORDER BY `$this->strFiled_order` DESC LIMIT 0 , 1 "
;

            
//echo $strQuery ;

            
$resResult = mysql_query ( &$strQuery , $this->resDbc ) ;

            while (
$arrRow = mysql_fetch_row ( $resResult ) )

            {

                
$floSelectItemLastestOrder = $arrRow[0] ;

            }

            
mysql_free_result ( $resResult ) ;

            if ( !
$floSelectItemLastestOrder ) $floSelectItemLastestOrder = $floSelectItemOrder ;

            return
$floSelectItemLastestOrder ;

        }



        function
get_elements ( $intParentId = 0 )

        {

            
mysql_select_db ( $this->strDatabase , $this->resDbc ) ;

            if (
$intParentId == 0 )

            {

                
$intMainId = $this->get_new_mainid ( );

                return array (
"mainid" => $intMainId , "order" => 0 , "level" => 0 ) ;

            }



            
$strQuery  = " SELECT `$this->strFiled_mainid` , `$this->strFiled_order` , `$this->strFiled_level`

                           FROM `$this->strMenuTable`  

                           WHERE `$this->strFiled_id` = $intParentId "
;

            
$resResult = mysql_query ( &$strQuery , $this->resDbc ) ;

            while (
$arrRow = mysql_fetch_row ( $resResult ) )

            {

                
$intMainId   = $arrRow[0] ;

                
$floOrder    = $arrRow[1] ;

                
$intLevel    = $arrRow[2] ;

            }

            
mysql_free_result ( $resResult ) ;



            if ( !
$intMainId ) return false ;



            
$intLevelLastestId = $this->get_level_lastest_id ( $intParentId ) ;



            
// get pre order

            
if ( $intLevelLastestId )

            {

                
$floPreOrder = $this->get_level_lastest_order ( $intLevelLastestId );

               
// echo $floPreOrder ;exit;

            
}

            else

            {

                
$floPreOrder = $floOrder ;

            }

            

            
// get next order

            
$strQuery = " SELECT `$this->strFiled_order`

                          FROM `$this->strMenuTable`  

                          WHERE `$this->strFiled_mainid` = $intMainId AND `$this->strFiled_order` > $floPreOrder

                          ORDER BY `$this->strFiled_order` ASC LIMIT 0 , 1 "
;

            
$resResult = mysql_query ( &$strQuery , $this->resDbc ) ;

            while (
$arrRow = mysql_fetch_row ( $resResult ) )

            {

                
$floNextOrder = $arrRow[0] ;

            }

            
mysql_free_result ( $resResult ) ;



            if ( !
$floNextOrder )

            {

                
$floNewOrder = floor ( $floPreOrder + 1 ) ;

            }

            else

            {

                

                
$floNewOrder = number_format ( ( $floPreOrder + $floNextOrder ) / 2 , 14 ) ;

            }



            
$intNewLevel = $intLevel + 1 ;

            return array (
"mainid" => $intMainId , "order" => $floNewOrder , "level" => $intNewLevel ) ;

        }



        function
update_tree ( $intMainId , $intParentId , $floOrder )

        {

            if ( !
$intParentId ) return false ;



            
mysql_select_db ( $this->strDatabase , $this->resDbc ) ;



            
$strQuery  = " SELECT `tree`  

                           FROM `$this->strMenuTreeTable`  

                           WHERE `mainid` = $intMainId AND BINARY ( `tree`) LIKE '%|$intParentId|'

                           ORDER BY `order` DESC LIMIT 0 , 1 "
;

            
$resResult = mysql_query ( &$strQuery , $this->resDbc ) ;

            while (
$arrRow = mysql_fetch_row ( $resResult ) )

            {

                
$strTree  = $arrRow[0] ;

            }

            
mysql_free_result ( $resResult ) ;



            if ( !
$strTree )

            {

                
$strQuery  = " SELECT `$this->strFiled_parentid`  

                               FROM `$this->strMenuTable`  

                               WHERE `$this->strFiled_id` = $intParentId "
;

                
$resResult = mysql_query ( &$strQuery , $this->resDbc ) ;

                while (
$arrRow = mysql_fetch_row ( $resResult ) )

                {

                    
$intPreParentId  = $arrRow[0] ;

                }

                
mysql_free_result ( $resResult ) ;



                if ( !
$intPreParentId )

                {

                    
$strPreTree = '';

                }

                else

                {

                    
$strQuery  = " SELECT `tree`  

                                   FROM `$this->strMenuTreeTable`  

                                   WHERE `mainid` = $intMainId AND BINARY ( `tree`) LIKE '%|$intPreParentId|'

                                   ORDER BY `order` DESC LIMIT 0 , 1 "
;

                    
$resResult = mysql_query ( &$strQuery , $this->resDbc ) ;

                    while (
$arrRow = mysql_fetch_row ( $resResult ) )

                    {

                        
$strPreTree  = $arrRow[0] ;

                    }

                    
mysql_free_result ( $resResult ) ;

                }

                

                
$strNewTree = $strPreTree . '|'. $intParentId . '|' ;

                
$strQuery   = " INSERT INTO `$this->strMenuTreeTable`

                                VALUES ( $intMainId, '$strNewTree', $floOrder ) "
;

                
$resResult  = mysql_query ( &$strQuery , $this->resDbc ) ;

                @
mysql_free_result ( $resResult ) ;

                return
true ;

            }

            else

            {

                
$strQuery   = " UPDATE `$this->strMenuTreeTable`

                                SET `order` =  $floOrder

                                WHERE `mainid` = $intMainId AND `tree` = '$strTree' "
;

                
$resResult  = mysql_query ( &$strQuery , $this->resDbc ) ;

                @
mysql_free_result ( $resResult ) ;

                return
true ;

            }

        }

    }

}



/*

$pFreeRoad = new FreeRoad ( $resDbc , $arrDatabase["dbname"] , 'menus' , 'menu_tree' ) ;



$info = 'change here';



$intParentId = change here ;

$arrItems  = $pFreeRoad->get_elements( $intParentId ) ;

$intMainId = $arrItems['mainid'] ;

$floOrder  = $arrItems['order'] ;

$intLevel  = $arrItems['level'] ;



$strQuery  = " INSERT INTO `menus` VALUES ( '' , $intMainId , $intParentId , $floOrder , $intLevel, '$info' ) " ;


$resResult = mysql_query ( &$strQuery , $resDbc ) ;



$pFreeRoad->update_tree ( $intMainId , $intParentId , $floOrder ) ;



@mysql_close( $resDbc ) ;

*/

?>


include "freeroad.class.php";

$strQuery = " SELECT * FROM `menus` ORDER BY `mainid` ASC , `order` ASC ";

$resResult = mysql_query ( &$strQuery , $resDbc ) ;

while (
$arrRows = mysql_fetch_array ( $resResult ))

{

    
$intLevel = $arrRows["level"] ;

    
$strSpace = '' ;

    for (
$i = 0 ; $i $intLevel ; $i++ )

    {

        
$strSpace .= "  ";

    }

    if (
$i>1 )

    {

       
$strSpace .= '--';

    }

    echo
$strSpace .  $arrRows["id"] . $arrRows["info"] ."
"
;

}



if (
$_GET["action"] == 'add' )

{



    
$pFreeRoad = new FreeRoad ( $resDbc , $arrDatabase["dbname"] , 'menus' , 'menu_tree' ) ;



    
$info = 'F1';



    
$intParentId = 1 ;

    
$arrItems  = $pFreeRoad->get_elements( $intParentId ) ;

    
$intMainId = $arrItems['mainid'] ;

    
$floOrder  = $arrItems['order'] ;

    
$intLevel  = $arrItems['level'] ;



    
$strQuery  = " INSERT INTO `menus` VALUES ( '' , $intMainId , $intParentId , $floOrder , $intLevel, '$info' ) " ;

    
$resResult = mysql_query ( &$strQuery , $resDbc ) ;



    
$pFreeRoad->update_tree ( $intMainId , $intParentId , $floOrder ) ;



    @
mysql_close( $resDbc ) ;



}

?>

容易可以看出,输出的时候是如此简单便实现树结构了:
SELECT * FROM `menus` ORDER BY `mainid` ASC, `order` ASC ;

前文输出写成输入了~~~ 晕倒。。

输出的时候,根据level来做树结构。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menulis novel dalam aplikasi Novel Percuma Tomato Kongsi tutorial cara menulis novel dalam Novel Tomato. Cara menulis novel dalam aplikasi Novel Percuma Tomato Kongsi tutorial cara menulis novel dalam Novel Tomato. Mar 28, 2024 pm 12:50 PM

Novel Tomato adalah perisian membaca novel yang sangat popular Kami sering mempunyai novel dan komik baru untuk dibaca dalam Novel Tomato Setiap novel dan komik sangat menarik ingin menulis ke dalam teks. Jadi bagaimana kita menulis novel di dalamnya? Kongsi tutorial novel Tomato tentang cara menulis novel 1. Mula-mula buka aplikasi novel percuma Tomato pada telefon bimbit anda dan klik pada Pusat Peribadi - Pusat Penulis 2. Lompat ke halaman Pembantu Penulis Tomato - klik pada Buat buku baru di penghujung novel.

Bagaimana untuk memasukkan bios pada papan induk Berwarna-warni? Ajar anda dua kaedah Bagaimana untuk memasukkan bios pada papan induk Berwarna-warni? Ajar anda dua kaedah Mar 13, 2024 pm 06:01 PM

Papan induk berwarna-warni menikmati populariti tinggi dan bahagian pasaran dalam pasaran domestik China, tetapi sesetengah pengguna papan induk Berwarna-warni masih tidak tahu cara memasukkan bios untuk tetapan? Sebagai tindak balas kepada situasi ini, editor telah membawakan anda secara khas dua kaedah untuk memasukkan bios motherboard yang berwarna-warni. Datang dan cuba! Kaedah 1: Gunakan kekunci pintasan permulaan cakera U untuk terus memasuki sistem pemasangan cakera U Kekunci pintasan untuk papan induk Berwarna untuk memulakan cakera U dengan satu klik ialah ESC atau F11 Pertama, gunakan Black Shark Installation Master untuk mencipta Black Cakera but cakera Shark U, dan kemudian hidupkan komputer Apabila anda melihat skrin permulaan, tekan terus kekunci ESC atau F11 pada papan kekunci untuk memasuki tetingkap untuk pemilihan item permulaan secara berurutan ke tempat "USB " dipaparkan, dan kemudian

Bagaimana untuk memulihkan kenalan yang dipadam pada WeChat (tutorial mudah memberitahu anda cara memulihkan kenalan yang dipadam) Bagaimana untuk memulihkan kenalan yang dipadam pada WeChat (tutorial mudah memberitahu anda cara memulihkan kenalan yang dipadam) May 01, 2024 pm 12:01 PM

Malangnya, orang sering memadamkan kenalan tertentu secara tidak sengaja atas sebab tertentu WeChat ialah perisian sosial yang digunakan secara meluas. Untuk membantu pengguna menyelesaikan masalah ini, artikel ini akan memperkenalkan cara mendapatkan semula kenalan yang dipadam dengan cara yang mudah. 1. Fahami mekanisme pemadaman kenalan WeChat Ini memberi kita kemungkinan untuk mendapatkan semula kenalan yang dipadamkan Mekanisme pemadaman kenalan dalam WeChat mengalih keluar mereka daripada buku alamat, tetapi tidak memadamkannya sepenuhnya. 2. Gunakan fungsi "Pemulihan Buku Kenalan" terbina dalam WeChat menyediakan "Pemulihan Buku Kenalan" untuk menjimatkan masa dan tenaga Pengguna boleh mendapatkan semula kenalan yang telah dipadamkan dengan cepat melalui fungsi ini. 3. Masuk ke halaman tetapan WeChat dan klik sudut kanan bawah, buka aplikasi WeChat "Saya" dan klik ikon tetapan di sudut kanan atas untuk memasuki halaman tetapan.

Bagaimana untuk menetapkan saiz fon pada telefon mudah alih (mudah melaraskan saiz fon pada telefon bimbit) Bagaimana untuk menetapkan saiz fon pada telefon mudah alih (mudah melaraskan saiz fon pada telefon bimbit) May 07, 2024 pm 03:34 PM

Menetapkan saiz fon telah menjadi keperluan pemperibadian yang penting kerana telefon mudah alih menjadi alat penting dalam kehidupan seharian manusia. Untuk memenuhi keperluan pengguna yang berbeza, artikel ini akan memperkenalkan cara meningkatkan pengalaman penggunaan telefon mudah alih dan melaraskan saiz fon telefon mudah alih melalui operasi mudah. Mengapa anda perlu melaraskan saiz fon telefon mudah alih anda - Melaraskan saiz fon boleh menjadikan teks lebih jelas dan mudah dibaca - Sesuai untuk keperluan membaca pengguna yang berbeza umur - Mudah untuk pengguna yang kurang penglihatan menggunakan saiz fon fungsi tetapan sistem telefon mudah alih - Cara memasukkan antara muka tetapan sistem - Dalam Cari dan masukkan pilihan "Paparan" dalam antara muka tetapan - cari pilihan "Saiz Fon" dan laraskan saiz fon dengan pihak ketiga aplikasi - muat turun dan pasang aplikasi yang menyokong pelarasan saiz fon - buka aplikasi dan masukkan antara muka tetapan yang berkaitan - mengikut individu

Bagaimana untuk melaksanakan log masuk WeChat dwi pada telefon mudah alih Huawei? Bagaimana untuk melaksanakan log masuk WeChat dwi pada telefon mudah alih Huawei? Mar 24, 2024 am 11:27 AM

Bagaimana untuk melaksanakan log masuk WeChat dwi pada telefon mudah alih Huawei? Dengan kebangkitan media sosial, WeChat telah menjadi salah satu alat komunikasi yang sangat diperlukan dalam kehidupan seharian orang ramai. Walau bagaimanapun, ramai orang mungkin menghadapi masalah: log masuk ke beberapa akaun WeChat pada masa yang sama pada telefon mudah alih yang sama. Bagi pengguna telefon mudah alih Huawei, tidak sukar untuk mencapai log masuk WeChat dwi Artikel ini akan memperkenalkan cara mencapai log masuk WeChat dwi pada telefon mudah alih Huawei. Pertama sekali, sistem EMUI yang disertakan dengan telefon mudah alih Huawei menyediakan fungsi yang sangat mudah - pembukaan dua aplikasi. Melalui fungsi pembukaan dwi aplikasi, pengguna boleh serentak

Rahsia penetasan telur naga mudah alih terbongkar (langkah demi langkah untuk mengajar anda cara berjaya menetas telur naga mudah alih) Rahsia penetasan telur naga mudah alih terbongkar (langkah demi langkah untuk mengajar anda cara berjaya menetas telur naga mudah alih) May 04, 2024 pm 06:01 PM

Permainan mudah alih telah menjadi sebahagian daripada kehidupan orang ramai dengan perkembangan teknologi. Ia telah menarik perhatian ramai pemain dengan imej telur naga yang comel dan proses penetasan yang menarik, dan salah satu permainan yang telah menarik perhatian ramai ialah versi mudah alih Dragon Egg. Untuk membantu pemain memupuk dan mengembangkan naga mereka sendiri dengan lebih baik dalam permainan, artikel ini akan memperkenalkan kepada anda cara menetas telur naga dalam versi mudah alih. 1. Pilih jenis telur naga yang sesuai Pemain perlu berhati-hati memilih jenis telur naga yang mereka suka dan sesuai dengan diri mereka, berdasarkan pelbagai jenis sifat dan kebolehan telur naga yang disediakan dalam permainan. 2. Tingkatkan tahap mesin pengeraman Pemain perlu meningkatkan tahap mesin pengeraman dengan menyelesaikan tugasan dan mengumpul prop Tahap mesin pengeraman menentukan kelajuan penetasan dan kadar kejayaan penetasan. 3. Kumpul sumber yang diperlukan untuk penetasan Pemain perlu berada dalam permainan

Kuasai dengan cepat: Bagaimana untuk membuka dua akaun WeChat pada telefon bimbit Huawei didedahkan! Kuasai dengan cepat: Bagaimana untuk membuka dua akaun WeChat pada telefon bimbit Huawei didedahkan! Mar 23, 2024 am 10:42 AM

Dalam masyarakat hari ini, telefon bimbit telah menjadi sebahagian daripada kehidupan kita. Sebagai alat penting untuk komunikasi harian, kerja dan kehidupan kita, WeChat sering digunakan. Walau bagaimanapun, mungkin perlu untuk memisahkan dua akaun WeChat apabila mengendalikan transaksi yang berbeza, yang memerlukan telefon mudah alih untuk menyokong log masuk ke dua akaun WeChat pada masa yang sama. Sebagai jenama domestik yang terkenal, telefon bimbit Huawei digunakan oleh ramai orang Jadi apakah kaedah untuk membuka dua akaun WeChat pada telefon bimbit Huawei? Mari kita dedahkan rahsia kaedah ini. Pertama sekali, anda perlu menggunakan dua akaun WeChat pada masa yang sama pada telefon mudah alih Huawei anda Cara paling mudah ialah

Panduan Pengaturcaraan PHP: Kaedah untuk Melaksanakan Jujukan Fibonacci Panduan Pengaturcaraan PHP: Kaedah untuk Melaksanakan Jujukan Fibonacci Mar 20, 2024 pm 04:54 PM

Bahasa pengaturcaraan PHP ialah alat yang berkuasa untuk pembangunan web, yang mampu menyokong pelbagai logik dan algoritma pengaturcaraan yang berbeza. Antaranya, melaksanakan jujukan Fibonacci adalah masalah pengaturcaraan biasa dan klasik. Dalam artikel ini, kami akan memperkenalkan cara menggunakan bahasa pengaturcaraan PHP untuk melaksanakan jujukan Fibonacci, dan melampirkan contoh kod tertentu. Jujukan Fibonacci ialah jujukan matematik yang ditakrifkan seperti berikut: unsur pertama dan kedua bagi jujukan ialah 1, dan bermula dari unsur ketiga, nilai setiap unsur adalah sama dengan jumlah dua unsur sebelumnya. Beberapa elemen pertama urutan

See all articles