2012-04-09 19 views
1

Ich habe das Internet in den letzten Tagen nach einer Lösung für mein Problem gesucht, aber bis jetzt nichts. Ich habe eine Reihe von Seiten, die ich als Seitenumbruch behandeln muss, das heißt, zeige den vorherigen Artikel und den nächsten Artikel. Der Array-Inhalt kann sich je nach Abschnitt ändern, der angezeigt wird, aber das Setup ist immer gleich.Finden Sie den letzten und nächsten Artikel in mutlidimental Array

Mein Array:

Array 
(
    [19] => Array 
     (
      [titill] => Kafli 1 
      [slug] => kafli1 
      [undir] => Array 
       (
        [21] => Array 
         (
          [titill] => 1.1 Serhljodar 
          [slug] => serhljodar 
          [kaflar] => Array 
           (
            [0] => Array 
             (
              [id] => 24 
              [titill] => Æfing 1 
              [slug] => aefing1 
             ) 

            [1] => Array 
             (
              [id] => 25 
              [titill] => Æfing 2 
              [slug] => æfing2 
             ) 

            [2] => Array 
             (
              [id] => 26 
              [titill] => Próf 1 
              [slug] => prof1 
             ) 

           ) 

         ) 

        [22] => Array 
         (
          [titill] => 1.2. Samhljóðar 
          [slug] => samhljodar 
         ) 

        [23] => Array 
         (
          [titill] => 1.3 Málnotkun 
          [slug] => malnotkun 
         ) 

       ) 

     ) 

    [20] => Array 
     (
      [titill] => Kafli 2 
      [slug] => kafli2 
     ) 

) 

Die Array-Tasten sind die post_id des und die Schnecke ist die Urls. Um zu erklären, was ich versuche, mit diesem Array acchieve Ich habe ein paar Beispiele writtend auf, was ich tun möchte:

  • wenn ich localhost/kafli1 sehen würde ich sehen, dass der nächste Punkt ist localhost/kafli1/serhljodar (key # 21) und der keine vorherigen Artikel.
  • wenn ich sehe localhost/kafli1/serhljodar ich sollte sehen, dass die nächste Artikel ist localhost/kafli1/serhljodar/aefing1 und der vorherige Artikel ist localhost/kafli.
  • wenn 8'm sehen localhost/kafli/serhljodar/prof1 (ID # 26) sollte ich sehen, dass der nächste Punkt ist localhost/kafli1/samhljodar und vorherigen Artikel ist localhost/kafli1/serhljodar/aefing2

Ich habe gesagt, array_slice zu verwenden, aber bisher hat es nicht war eine große Hilfe. Können Sie mir bei diesem Problem helfen?


EDIT: Es wird gesagt, dass das Array selbst das Problem ist. Unten ist die SQL dieses Array aus bevölkert:

INSERT INTO `posts` (`id`, `parent_id`, `category`, `position`, `post_slug`, `titill`) VALUES 
(9, 0, 3, 0, 'islenska-stig1', 'Íslenska stig 1'), 
(19, 9, 3, 0, 'kafli1', 'Kafli 1'), 
(20, 9, 3, 0, 'kafli2', 'Kafli 2',), 
(21, 19, 3, 0, 'serhljodar', '1.1 Serhljodar'), 
(22, 19, 3, 0, 'samhljodar', '1.2. Samhljóðar'), 
(23, 19, 3, 0, 'malnotkun', '1.3 Málnotkun'), 
(24, 21, 3, 1, 'aefing1', 'Æfing 1'), 
(26, 21, 3, 3, 'prof1', 'Próf 1'); 

Wenn das Array das Problem ist, wie kann ich aus diesen Stellen eine Paginierung Array erfolgreich schaffen, so dass die sich der parent_id align unter der korrekten ID, so kann ich bekommen:

Array 
(
    [0] => islenska-stig1 
    [1] => kafli1 
    [2] => serhljodar 
    [3] => aefing1 
    [4] => prof1 
    [5] => samhljodar 
    [6] => malnotkun 
    [6] => kafli2 
) 
+0

sind Funktionen wie 'current()', 'next()', 'end()' nicht dafür geeignet? –

Antwort

0

Ich habe den Verdacht, dass die Struktur Ihres Arrays das Problem ist.

Es klingt, als ob Sie versuchen, Ihr Multi-D-Array als lineares Array zu verwenden. Also meine Empfehlung ist, dass Sie alles durchlaufen und jedes Element in ein eindimensionales Array schieben. und referenziere einfach deine vorherigen und nächsten Einträge mit currentIndex + - 1

+0

Ich dachte auch daran. Ich bin mir jedoch nicht sicher, wie ich es einrichten soll, ohne drei oder vier Verbindungen zur Datenbank zu öffnen. Ich habe meine Frage aktualisiert. – dansige

0

Ich vermute, dass die Art der Datenstruktur, nach der du suchst, die doppelt verknüpfte Liste ist. Es stellt eine Liste von Elementen dar, die Zeiger für das nächste Element und das vorherige Element haben.

Überprüfen Sie diesen Link, um zu sehen, ob es Ihren Anforderungen entspricht:

http://php.net/manual/en/class.spldoublylinkedlist.php

+0

klingt interessant ... aber nicht ganz sicher, wie man es testet oder implementiert: / – dansige

Verwandte Themen