Heim Backend-Entwicklung PHP-Tutorial 关于xuzuning版主发的非递归树形数组构造函数有关问题

关于xuzuning版主发的非递归树形数组构造函数有关问题

Jun 13, 2016 pm 01:31 PM
child id pid quot

关于xuzuning版主发的非递归树形数组构造函数问题
之前自己使用过循环或者递归构建树型数组。今天搜索的时候看到之前xuzuning版主发的非递归树型数组构建函数。


PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
/**
 * 创建子节点树形数组
 * 参数
 * $ar 数组,邻接列表方式组织的数据
 * $id 数组中作为主键的下标或关联键名
 * $pid 数组中作为父键的下标或关联键名
 * 返回 多维数组
 **/
function find_child($ar, $id='id', $pid='pid') {
  foreach($ar as $v) $t[$v[$id]] = $v;
  foreach ($t as $k => $item){
    if( $item[$pid] ) {
      $t[$item[$pid]]['child'][$item[$id]] =& $t[$k];
    }
  }
  return $t;
}

Nach dem Login kopieren


觉得写的非常巧妙,效率很高,也非常安全,受益匪浅。但是,在实际使用中,碰见了一点小问题。
因为本函数的中心思想是通过$tree[$pid]这样的结构来存放,也就是说,每条记录的key为其$pid。

这样就出现了一个问题,我在使用json_encode()的时候,会变成
{"pid1":{"id":"0001","pid":"0000","children":[{"pid2":{"id":"0002","pid":"0001"}},{"pid3":{"id":"0003","pid":"0001"}}]}}这样
可是我需要的结构是
{"id":"0001","pid":"0000","children":[{"id":"0002","pid":"0001"},{"id":"0002","pid":"0001"}]}
也就是说,存放记录的key为array默认的。

请问这个函数应该怎么修改呢?

------解决方案--------------------
不大可能,除非你寻找出新的算法
这个算法就是利用了 pid 和 id 的关系,通过构造关联数组才得以实现的

如果要使用这个函数,就要接受这个结果。除去 child 键倒是可以的

如果你遍历结果,将所有 child 下的关联数组用 array_values 化为下标数组,亦是一种方法
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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

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)

Diese Apple-ID wird im iTunes Store noch nicht verwendet: Fix Diese Apple-ID wird im iTunes Store noch nicht verwendet: Fix Jun 10, 2024 pm 05:42 PM

Wenn Sie sich mit der AppleID beim iTunesStore anmelden, wird möglicherweise die Fehlermeldung „Diese AppleID wurde nicht im iTunesStore verwendet“ auf dem Bildschirm angezeigt. Es gibt keine Fehlermeldungen, über die Sie sich Sorgen machen müssen. Sie können sie beheben, indem Sie diese Lösungssätze befolgen. Fix 1 – Lieferadresse ändern Der Hauptgrund, warum diese Aufforderung im iTunes Store erscheint, ist, dass Sie nicht die richtige Adresse in Ihrem AppleID-Profil haben. Schritt 1 – Öffnen Sie zunächst die iPhone-Einstellungen auf Ihrem iPhone. Schritt 2 – AppleID sollte über allen anderen Einstellungen stehen. Also, öffnen Sie es. Schritt 3 – Öffnen Sie dort die Option „Zahlung & Versand“. Schritt 4 – Bestätigen Sie Ihren Zugang mit Face ID. Schritt

Beheben Sie den Festplattenfehler der Ereignis-ID 55, 50, 98, 140 in der Ereignisanzeige Beheben Sie den Festplattenfehler der Ereignis-ID 55, 50, 98, 140 in der Ereignisanzeige Mar 19, 2024 am 09:43 AM

Wenn Sie in der Ereignisanzeige von Windows 11/10 die Ereignis-ID 55, 50, 140 oder 98 finden oder auf einen Fehler stoßen, dass die Dateisystemstruktur der Festplatte beschädigt ist und nicht verwendet werden kann, befolgen Sie bitte die nachstehende Anleitung, um das Problem zu beheben. Was bedeutet Ereignis 55, Dateisystemstruktur auf der Festplatte beschädigt und unbrauchbar? Bei Sitzung 55 ist die Dateisystemstruktur auf der Ntfs-Festplatte beschädigt und unbrauchbar. Bitte führen Sie das Dienstprogramm chkMSK auf dem Volume aus. Wenn NTFS keine Daten in das Transaktionsprotokoll schreiben kann, wird ein Fehler mit der Ereignis-ID 55 ausgelöst, der dazu führt, dass NTFS den Vorgang nicht abschließen kann und die Transaktionsdaten nicht schreiben kann. Dieser Fehler tritt normalerweise auf, wenn das Dateisystem beschädigt ist, möglicherweise aufgrund fehlerhafter Sektoren auf der Festplatte oder aufgrund der Unzulänglichkeit des Dateisystems im Festplattensubsystem.

Wo finde ich die Alibaba-ID? Wo finde ich die Alibaba-ID? Mar 08, 2024 pm 09:49 PM

Sobald Sie in der Alibaba-Software erfolgreich ein Konto registriert haben, weist Ihnen das System eine eindeutige ID zu, die als Ihre Identität auf der Plattform dient. Viele Benutzer möchten jedoch ihre ID abfragen, wissen aber nicht, wie das geht. Dann wird Ihnen der Herausgeber dieser Website unten eine detaillierte Einführung in die Strategieschritte geben. Ich hoffe, es kann Ihnen helfen! Wo finde ich die Antwort auf die Alibaba-ID: [Alibaba]-[My]. 1. Öffnen Sie zuerst die Alibaba-Software. Nachdem Sie die Startseite aufgerufen haben, müssen Sie auf [Mein] in der unteren rechten Ecke klicken. 2. Nachdem wir zur „Mein“-Seite gelangt sind, können wir oben auf der Seite [ID] sehen Ist die ID dieselbe wie die Taobao-ID? Alibaba ID und Taobao ID sind unterschiedlich, aber die beiden

Ereignis-ID 4660: Objekt gelöscht [Fix] Ereignis-ID 4660: Objekt gelöscht [Fix] Jul 03, 2023 am 08:13 AM

Einige unserer Leser sind auf das Ereignis ID4660 gestoßen. Sie sind sich oft nicht sicher, was sie tun sollen, deshalb erklären wir es in diesem Leitfaden. Die Ereignis-ID 4660 wird normalerweise protokolliert, wenn ein Objekt gelöscht wird. Daher werden wir auch einige praktische Möglichkeiten zur Behebung des Problems auf Ihrem Computer untersuchen. Was ist Ereignis-ID4660? Die Ereignis-ID 4660 bezieht sich auf Objekte in Active Directory und wird durch einen der folgenden Faktoren ausgelöst: Objektlöschung – Ein Sicherheitsereignis mit der Ereignis-ID 4660 wird protokolliert, wenn ein Objekt aus Active Directory gelöscht wird. Manuelle Änderungen – Die Ereignis-ID 4660 kann generiert werden, wenn ein Benutzer oder Administrator die Berechtigungen eines Objekts manuell ändert. Dies kann passieren, wenn Sie Berechtigungseinstellungen ändern, Zugriffsebenen ändern oder Personen oder Gruppen hinzufügen oder entfernen

Wo Sie die Tencent-Video-ID überprüfen können Wo Sie die Tencent-Video-ID überprüfen können Feb 24, 2024 pm 06:25 PM

Wo kann ich die Tencent-Video-ID überprüfen? Es gibt eine exklusive ID in der Tencent-Video-App, aber die meisten Benutzer wissen nicht, wie sie die Tencent-Video-ID überprüfen können. Als Nächstes finden Sie die grafische Anleitung zum Überprüfen der Tencent-Video-ID Editor für interessierte Benutzer. Schauen Sie vorbei! Tencent Video-Nutzungsanleitung Wo Sie die Tencent Video-ID überprüfen können 1. Öffnen Sie zunächst die Tencent Video-App und betreten Sie den speziellen Bereich über [Personal Center] in der unteren rechten Ecke der Hauptseite. 2. Rufen Sie dann die Seite „Personal Center“ auf und wählen Sie [; 3. Gehen Sie dann zur Seite „Einstellungen“ und klicken Sie unten auf „Konto verlassen“. 4. Schließlich können Sie die exklusive ID-Nummer auf der unten gezeigten Seite anzeigen.

Wie zeige ich die PID im Win7-Task-Manager an? Der Editor zeigt Ihnen, wie Sie sie anzeigen. Wie zeige ich die PID im Win7-Task-Manager an? Der Editor zeigt Ihnen, wie Sie sie anzeigen. Jan 11, 2024 pm 07:00 PM

Vielen Freunden ist die PID-ID möglicherweise nicht bekannt. Sie können sie im Task-Manager überprüfen. Einige Benutzer können die PID-ID jedoch nicht finden, wenn sie den Task-Manager öffnen. Wenn der Benutzer die Prozess-PID-ID anzeigen möchte, muss er den „Task-Manager“ einrichten, um ihn anzuzeigen Nehmen Sie das Win7-System als Beispiel. So zeigen Sie die Prozess-PID-ID an. Die PID-Kennung ist eine eindeutige fortlaufende Nummer, die vom Windows-Betriebssystem automatisch den laufenden Programmen zugewiesen wird. Nach Beendigung des Prozesses wird die PID vom System wiederverwendet und möglicherweise weiterhin neu laufenden Programmen zugewiesen Sie verwenden den Task-Manager zur Überprüfung. Wie überprüft man also die Prozess-PID-Kennung? Lassen Sie mich es unten mit Ihnen teilen

Welche Lösungen gibt es für die verteilte Redis-ID? Welche Lösungen gibt es für die verteilte Redis-ID? Jun 03, 2023 am 10:14 AM

Häufig verwendete verteilte ID-Lösungen In verteilten Systemen ist es sehr wichtig, global eindeutige IDs zu generieren, da in verteilten Systemen mehrere Knoten, die gleichzeitig IDs generieren, zu ID-Konflikten führen können. Im Folgenden werden einige häufig verwendete verteilte ID-Lösungen vorgestellt. UUIDUUID (Universally Unique Identifier) ​​​​ist eine aus 128 Ziffern bestehende Kennung, die globale Eindeutigkeit garantieren kann, da ihr Generierungsalgorithmus auf Faktoren wie Zeitstempel, Knoten-ID usw. basiert. UUID kann mit der Java-eigenen UUID-Klasse generiert werden, wie unten gezeigt: javaCopycodeimportjava.util.UUID; publicclassUuidGenerator{publicstat

So finden Sie die übergeordnete Prozess-ID (PPID) unter Linux So finden Sie die übergeordnete Prozess-ID (PPID) unter Linux Mar 09, 2024 am 08:01 AM

Im Linux-Betriebssystem ist jedes laufende Programm ein Prozess, und jeder Prozess verfügt über eine eindeutige Prozesskennung (PID). Ebenso verfügt jeder Prozess über einen übergeordneten Prozess, nämlich den Prozess, der ihn erstellt hat. Die Kennung des übergeordneten Prozesses wird als übergeordnete Prozess-ID (PPID) bezeichnet. In diesem Artikel untersuchen wir, wie Sie die ID eines übergeordneten Prozesses in einem Linux-System ermitteln und stellen einige effektive Befehle und Tools vor, die Ihnen helfen, detaillierte Informationen über die Beziehung zwischen Prozessen zu erhalten. Grundlegende Befehle zum Ermitteln der übergeordneten Prozess-ID Zunächst stelle ich Ihnen kurz einige grundlegende Befehle vor, mit denen Sie alle im System laufenden Prozesse und ihre übergeordnete Prozess-ID anzeigen können. Verwenden Sie den Befehl ps, um Prozessinformationen anzuzeigen. Der Befehl ps ist ein leistungsstarkes Tool, das zur Berichterstellung verwendet wird

See all articles