Heim Backend-Entwicklung PHP-Tutorial 无限分类与树型论坛的实现方法_PHP

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

Jun 01, 2016 pm 12:34 PM
order 分类 实现 方法 无限 论坛

无限分类与树型论坛的实现方法
――浮点型字段排序法
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来做树结构。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So schreiben Sie einen Roman in der Tomato Free Novel-App. Teilen Sie das Tutorial zum Schreiben eines Romans in der Tomato Novel-App So schreiben Sie einen Roman in der Tomato Free Novel-App. Teilen Sie das Tutorial zum Schreiben eines Romans in der Tomato Novel-App Mar 28, 2024 pm 12:50 PM

Tomato Novel ist eine sehr beliebte Roman-Lesesoftware. Jeder Roman und Comic ist sehr interessant und möchte auch Romane schreiben Also, wie schreiben wir den Roman darin? Meine Freunde wissen es nicht, also lasst uns gemeinsam auf diese Seite gehen und uns eine Einführung zum Schreiben eines Romans ansehen. Teilen Sie das Tomato-Roman-Tutorial zum Schreiben eines Romans. 1. Öffnen Sie zunächst die kostenlose Tomato-Roman-App auf Ihrem Mobiltelefon und klicken Sie auf „Personal Center – Writer Center“. 2. Gehen Sie zur Seite „Tomato Writer Assistant“ – klicken Sie auf „Neues Buch erstellen“. am Ende des Romans.

Wie rufe ich das BIOS auf dem Colorful-Motherboard auf? Bringen Sie Ihnen zwei Methoden bei Wie rufe ich das BIOS auf dem Colorful-Motherboard auf? Bringen Sie Ihnen zwei Methoden bei Mar 13, 2024 pm 06:01 PM

Colorful-Motherboards erfreuen sich auf dem chinesischen Inlandsmarkt großer Beliebtheit und Marktanteil, aber einige Benutzer von Colorful-Motherboards wissen immer noch nicht, wie sie im BIOS Einstellungen vornehmen sollen? Als Reaktion auf diese Situation hat Ihnen der Herausgeber speziell zwei Methoden zum Aufrufen des farbenfrohen Motherboard-BIOS vorgestellt. Kommen Sie und probieren Sie es aus! Methode 1: Verwenden Sie die U-Disk-Start-Tastenkombination, um das U-Disk-Installationssystem direkt aufzurufen. Die Tastenkombination für das Colorful-Motherboard zum Starten der U-Disk ist zunächst ESC oder F11, um ein Black zu erstellen Wenn Sie den Startbildschirm sehen, drücken Sie kontinuierlich die ESC- oder F11-Taste auf der Tastatur, um ein Fenster zur Auswahl der Startelementsequenz aufzurufen. Bewegen Sie den Cursor an die Stelle, an der „USB“ angezeigt wird " wird angezeigt, und dann

So stellen Sie gelöschte Kontakte auf WeChat wieder her (ein einfaches Tutorial erklärt Ihnen, wie Sie gelöschte Kontakte wiederherstellen) So stellen Sie gelöschte Kontakte auf WeChat wieder her (ein einfaches Tutorial erklärt Ihnen, wie Sie gelöschte Kontakte wiederherstellen) May 01, 2024 pm 12:01 PM

Leider löschen Menschen aus bestimmten Gründen oft versehentlich bestimmte Kontakte. WeChat ist eine weit verbreitete soziale Software. Um Benutzern bei der Lösung dieses Problems zu helfen, wird in diesem Artikel erläutert, wie gelöschte Kontakte auf einfache Weise wiederhergestellt werden können. 1. Verstehen Sie den WeChat-Kontaktlöschmechanismus. Dies bietet uns die Möglichkeit, gelöschte Kontakte wiederherzustellen. Der Kontaktlöschmechanismus in WeChat entfernt sie aus dem Adressbuch, löscht sie jedoch nicht vollständig. 2. Nutzen Sie die integrierte „Kontaktbuch-Wiederherstellung“-Funktion von WeChat, um Zeit und Energie zu sparen. Mit dieser Funktion können Benutzer schnell gelöschte Kontakte wiederherstellen. 3. Rufen Sie die WeChat-Einstellungsseite auf und klicken Sie auf die untere rechte Ecke, öffnen Sie die WeChat-Anwendung „Me“ und klicken Sie auf das Einstellungssymbol in der oberen rechten Ecke, um die Einstellungsseite aufzurufen.

So stellen Sie die Schriftgröße auf dem Mobiltelefon ein (Schriftgröße auf dem Mobiltelefon einfach anpassen) So stellen Sie die Schriftgröße auf dem Mobiltelefon ein (Schriftgröße auf dem Mobiltelefon einfach anpassen) May 07, 2024 pm 03:34 PM

Das Festlegen der Schriftgröße ist zu einer wichtigen Personalisierungsanforderung geworden, da Mobiltelefone zu einem wichtigen Werkzeug im täglichen Leben der Menschen geworden sind. Um den Bedürfnissen verschiedener Benutzer gerecht zu werden, wird in diesem Artikel erläutert, wie Sie das Nutzungserlebnis Ihres Mobiltelefons verbessern und die Schriftgröße des Mobiltelefons durch einfache Vorgänge anpassen können. Warum müssen Sie die Schriftgröße Ihres Mobiltelefons anpassen? Durch Anpassen der Schriftgröße kann der Text klarer und leichter lesbar werden. Geeignet für die Lesebedürfnisse von Benutzern unterschiedlichen Alters. Praktisch für Benutzer mit Sehbehinderung, die Schriftgröße zu verwenden Einstellungsfunktion des Mobiltelefonsystems – So rufen Sie die Systemeinstellungsoberfläche auf – Suchen und geben Sie die Option „Anzeige“ in der Einstellungsoberfläche ein – suchen Sie die Option „Schriftgröße“ und passen Sie sie mit einem Drittanbieter an Anwendung – Laden Sie eine Anwendung herunter und installieren Sie sie, die die Anpassung der Schriftgröße unterstützt – öffnen Sie die Anwendung und rufen Sie die entsprechende Einstellungsoberfläche auf – je nach Person

Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Mar 24, 2024 am 11:27 AM

Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Mit dem Aufkommen der sozialen Medien ist WeChat zu einem unverzichtbaren Kommunikationsmittel im täglichen Leben der Menschen geworden. Viele Menschen können jedoch auf ein Problem stoßen: Sie können sich gleichzeitig auf demselben Mobiltelefon bei mehreren WeChat-Konten anmelden. Für Huawei-Mobiltelefonbenutzer ist es nicht schwierig, eine doppelte WeChat-Anmeldung zu erreichen. In diesem Artikel wird erläutert, wie eine doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen erreicht wird. Erstens bietet das EMUI-System, das mit Huawei-Mobiltelefonen geliefert wird, eine sehr praktische Funktion – das doppelte Öffnen von Anwendungen. Durch die doppelte Öffnungsfunktion der Anwendung können Benutzer gleichzeitig

Das Geheimnis des Ausbrütens mobiler Dracheneier wird gelüftet (Schritt für Schritt erfahren Sie, wie Sie mobile Dracheneier erfolgreich ausbrüten) Das Geheimnis des Ausbrütens mobiler Dracheneier wird gelüftet (Schritt für Schritt erfahren Sie, wie Sie mobile Dracheneier erfolgreich ausbrüten) May 04, 2024 pm 06:01 PM

Mobile Spiele sind mit der Entwicklung der Technologie zu einem festen Bestandteil des Lebens der Menschen geworden. Mit seinem niedlichen Drachenei-Bild und dem interessanten Schlüpfvorgang hat es die Aufmerksamkeit vieler Spieler auf sich gezogen, und eines der Spiele, das viel Aufmerksamkeit erregt hat, ist die mobile Version von Dragon Egg. Um den Spielern dabei zu helfen, ihre eigenen Drachen im Spiel besser zu kultivieren und zu züchten, erfahren Sie in diesem Artikel, wie Sie Dracheneier in der mobilen Version ausbrüten. 1. Wählen Sie den geeigneten Drachenei-Typ aus, der Ihnen gefällt und zu Ihnen passt, basierend auf den verschiedenen Arten von Drachenei-Attributen und -Fähigkeiten, die im Spiel zur Verfügung stehen. 2. Verbessern Sie die Stufe der Brutmaschine, indem Sie Aufgaben erledigen und Requisiten sammeln. Die Stufe der Brutmaschine bestimmt die Schlüpfgeschwindigkeit und die Erfolgsquote beim Schlüpfen. 3. Sammeln Sie die Ressourcen, die die Spieler zum Schlüpfen benötigen

Schneller Meister: So eröffnen Sie zwei WeChat-Konten auf Huawei-Handys! Schneller Meister: So eröffnen Sie zwei WeChat-Konten auf Huawei-Handys! Mar 23, 2024 am 10:42 AM

In der heutigen Gesellschaft sind Mobiltelefone zu einem unverzichtbaren Bestandteil unseres Lebens geworden. Als wichtiges Werkzeug für unsere tägliche Kommunikation, Arbeit und unser Leben wird WeChat häufig genutzt. Allerdings kann es bei der Abwicklung unterschiedlicher Transaktionen erforderlich sein, zwei WeChat-Konten zu trennen, was erfordert, dass das Mobiltelefon die gleichzeitige Anmeldung bei zwei WeChat-Konten unterstützt. Als bekannte inländische Marke werden Huawei-Mobiltelefone von vielen Menschen genutzt. Wie können also zwei WeChat-Konten auf Huawei-Mobiltelefonen eröffnet werden? Lassen Sie uns das Geheimnis dieser Methode lüften. Zunächst müssen Sie zwei WeChat-Konten gleichzeitig auf Ihrem Huawei-Mobiltelefon verwenden. Der einfachste Weg ist

PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge Mar 20, 2024 pm 04:54 PM

Die Programmiersprache PHP ist ein leistungsstarkes Werkzeug für die Webentwicklung, das eine Vielzahl unterschiedlicher Programmierlogiken und Algorithmen unterstützen kann. Unter diesen ist die Implementierung der Fibonacci-Folge ein häufiges und klassisches Programmierproblem. In diesem Artikel stellen wir vor, wie Sie die Fibonacci-Folge mit der Programmiersprache PHP implementieren, und fügen spezifische Codebeispiele bei. Die Fibonacci-Folge ist eine mathematische Folge, die wie folgt definiert ist: Das erste und das zweite Element der Folge sind 1, und ab dem dritten Element ist der Wert jedes Elements gleich der Summe der beiden vorherigen Elemente. Die ersten paar Elemente der Sequenz

See all articles