2012-04-09 6 views
1

私はここ数日、私の問題を解決するためにインターネットを検索してきましたが、これまでのところ何も見つかりませんでした。私は、ページネーションとして扱う必要があるページの配列を持っています。これは、私の過去のアイテムと次のアイテムを表示します。配列の内容は表示するセクションに応じて変更できますが、設定は常に同じです。mutlidimentional配列の中で最後と次の項目を見つける

マイ配列:

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 
     ) 

) 

配列のキーはpost_idの年代であり、スラグのはURLです。次の項目が localhost/kafli1/serhljodar(鍵であることを私はlocalhost/kafli1を表示していた場合、私が見るであろう

  • :私は私が何をしたいのか、いくつかの例を下にwrittendきたこの配列をacchieveしようとしているかを説明するために、 #21)と前の項目がありません。
  • 私が表示している場合localhost/kafli1/serhljodar次の アイテムがlocalhost/kafli1/serhljodar/aefing1で、前のアイテムが がlocalhost/kafliであることがわかります。
  • 8'mはlocalhost/kafli/serhljodar/prof1 (ID番号26)を見た場合、私は次の項目がlocalhost/kafli1/samhljodarで、前の項目は私がarray_sliceを使用するように言われてきたこれまでのところ、それはしていないlocalhost/kafli1/serhljodar/aefing2

であることがわかります多くの助けがあった。善良な人々がこの問題で私を助けることができますか?


EDIT: 配列自体が問題であると言われてきました。配列は、私が正常に正しいIDの下PARENT_ID整列の自体は私が得ることができるので、これらの記事のうち、ページネーションの配列を作成することができますどのように問題がある場合は

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'); 

:以下は、この配列がから移入されたSQLがある

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

は '現在の()'、 '次の()'、 'エンド()'これには適していないような機能はありますか? –

答えて

0

私はあなたの配列の構造が問題であると疑っています。

マルチアレイをリニアアレイとして使用しているかのように聞こえます。ですから、私は、各項目を1次元の配列にプッシュすることで、すべてを繰り返し処理することをお勧めします。前の項目と次の項目をcurrentIndex + 1で参照するだけです。

+0

私はそれも考えました。しかし、私はデータベースへの3つまたは4つの接続を開くことなくそれを設定する方法がわかりません。私は私の質問を更新しました。 – dansige

0

探しているデータ構造のタイプが二重リンクリストであると思われます。これは、次の要素と前の要素のポインタを持つ要素のリストを表します。

それはあなたの要件を満たしているかどうかを確認するために、このリンクをチェックアウト:

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

+0

は興味深いと聞きました...しかし、それをテストしたり、 – dansige

関連する問題