PHPで多次元の連想配列からアイテムを削除する方法

エンドレオッテム

多次元の連想配列があります。位置に関係なく、配列から特定のアイテムを削除する方法を見つけようとしています。

この配列は、Webサイトでナビゲーションメニューを作成するために使用されます。サブアイテムは常に、その親アイテム内の「子」と呼ばれる配列にあります。キー「子供」は、子供がいないアイテムには存在しません。

「menuid」はデータベース内のアイテムのIDですが、アイテムには複数のタイプ(ページ、カテゴリページ、ギャラリー、URLなど)があるため、同じmenuidが複数回発生する可能性があります。「menuid」と「menutype」でアイテムを削除できるようにしたい。

menuidのみに基づいてアイテムを削除できますが、ルート配列からのみ削除できます。

$key = array_search(15, array_column($array, 'menuid'));
unset($array[$key]);

関数を使ってやりたいのですが、ここでも同じ問題があります。これは、アイテムが配列のルートにある場合にのみアイテムを削除します。

function removeItem($array, $menutype, $menuid)
{
   foreach ($array as $key => $value)
   {
      if (is_array($value)) 
      {
         if (isset($value['menutype']) && isset($value['menuid']) && $value['menutype'] == $menutype && $value['menuid'] == $menuid)
         {
            unset($array[$key]);
         }
      }
   }
   return $array;
}

$removeItem = removeItem($array, 'simplepage', 11);

「menutype」と「menuid」の両方に基づいて、配列内のどこからでもアイテムを削除する方法が見つかりませんでした。

配列の例を次に示します。menuid13およびmenutype "posts_category"のアイテムを削除するにはどうすればよいですか?

Array
(
    [0] => Array
        (
            [menutarget] => _parent
            [menulink] => /
            [rewritename] => Home
            [menutype] => url
            [menuid] => 2
            [id] => Home
        )

    [1] => Array
        (
            [id] => Category 3
            [menuid] => 15
            [menutype] => posts_category
            [rewritename] => Category_3
            [menulink] => 
            [menutarget] => _parent
        )

    [2] => Array
        (
            [id] => Page 1
            [menuid] => 11
            [menutype] => page
            [rewritename] => page_1
            [menulink] => 
            [menutarget] => _parent
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => Category 1
                            [menuid] => 13
                            [menutype] => posts_category
                            [rewritename] => Category_1
                            [menulink] => 
                            [menutarget] => _parent
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => Category 2
                                            [menuid] => 14
                                            [menutype] => posts_category
                                            [rewritename] => Category_2
                                            [menulink] => 
                                            [menutarget] => _parent
                                        )

                                )

                        )

                )

        )

    [3] => Array
        (
            [menutarget] => _parent
            [menulink] => 
            [rewritename] => Videotest
            [menutype] => page
            [menuid] => 10
            [id] => Videotest
        )
)
HTMHell

あなたはそれを再帰的にチェックしたい:

function removeItem(&$array, $menutype, $menuid)
{
    foreach ($array as $key => &$value) {
        if (isset($value['menutype'], $value['menuid']) && $value['menutype'] == $menutype && $value['menuid'] == $menuid) {
            unset($array[$key]);
        } elseif (isset($value['children']) && is_array($value['children'])) {
            removeItem($value['children'], $menutype, $menuid);
        }
    }
}

removeItem($arr, 'posts_category', 13);

print_r($arr);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHPの多次元連想配列からキーのみを削除します

分類Dev

PHPは、多次元の連想配列と印刷アイテムを反復処理します

分類Dev

Javascriptの連想配列からアイテムを削除します

分類Dev

空の値で多次元連想配列を初期化する方法

分類Dev

PHP配列を多次元連想配列に変換する方法

分類Dev

PHPの連想配列の先頭にアイテムを挿入する方法

分類Dev

配列からセットを作成し、JavaScriptで元のアイテムを削除する方法

分類Dev

PHP-座席予約プログラムの多次元連想配列で連続する値を見つける

分類Dev

2つの連想配列を1つの多次元連想配列に結合するPHPの効率的な方法

分類Dev

文字列から多次元連想配列を作成する

分類Dev

フォーム入力から多次元連想配列を作成する

分類Dev

PHP:多次元連想配列から個別の値を見つける

分類Dev

PHPの配列から特定の長さのアイテムを削除する方法

分類Dev

多次元の連想ポスト配列から連想配列を作成する-Codeigniter

分類Dev

PHPの値で多次元連想配列を並べ替える

分類Dev

PHPの多次元連想配列に値を追加する

分類Dev

.txtCの配列からアイテムを削除する方法

分類Dev

多次元の非連想配列でforeachループを使用する方法

分類Dev

Laravelコレクションから多次元連想配列の値を取得する方法

分類Dev

PHPの多次元配列で重複するアイテムを削除する機能的な方法はありますか?

分類Dev

PHP:HTMLからPHPへの多次元連想配列

分類Dev

連想配列から多次元連想配列に値を含める

分類Dev

PHPで多次元JSON文字列配列から要素の値を取得する方法

分類Dev

多次元連想配列にアクセスするPHP

分類Dev

PHPの多次元配列からアイテムを合計する

分類Dev

1つの配列で多次元の連想配列キーを取得する方法は?

分類Dev

多次元連想配列で重複する値を検出する方法は?

分類Dev

多次元連想配列から値を引き出します

分類Dev

多次元連想配列が空かどうかを確認する方法

Related 関連記事

  1. 1

    PHPの多次元連想配列からキーのみを削除します

  2. 2

    PHPは、多次元の連想配列と印刷アイテムを反復処理します

  3. 3

    Javascriptの連想配列からアイテムを削除します

  4. 4

    空の値で多次元連想配列を初期化する方法

  5. 5

    PHP配列を多次元連想配列に変換する方法

  6. 6

    PHPの連想配列の先頭にアイテムを挿入する方法

  7. 7

    配列からセットを作成し、JavaScriptで元のアイテムを削除する方法

  8. 8

    PHP-座席予約プログラムの多次元連想配列で連続する値を見つける

  9. 9

    2つの連想配列を1つの多次元連想配列に結合するPHPの効率的な方法

  10. 10

    文字列から多次元連想配列を作成する

  11. 11

    フォーム入力から多次元連想配列を作成する

  12. 12

    PHP:多次元連想配列から個別の値を見つける

  13. 13

    PHPの配列から特定の長さのアイテムを削除する方法

  14. 14

    多次元の連想ポスト配列から連想配列を作成する-Codeigniter

  15. 15

    PHPの値で多次元連想配列を並べ替える

  16. 16

    PHPの多次元連想配列に値を追加する

  17. 17

    .txtCの配列からアイテムを削除する方法

  18. 18

    多次元の非連想配列でforeachループを使用する方法

  19. 19

    Laravelコレクションから多次元連想配列の値を取得する方法

  20. 20

    PHPの多次元配列で重複するアイテムを削除する機能的な方法はありますか?

  21. 21

    PHP:HTMLからPHPへの多次元連想配列

  22. 22

    連想配列から多次元連想配列に値を含める

  23. 23

    PHPで多次元JSON文字列配列から要素の値を取得する方法

  24. 24

    多次元連想配列にアクセスするPHP

  25. 25

    PHPの多次元配列からアイテムを合計する

  26. 26

    1つの配列で多次元の連想配列キーを取得する方法は?

  27. 27

    多次元連想配列で重複する値を検出する方法は?

  28. 28

    多次元連想配列から値を引き出します

  29. 29

    多次元連想配列が空かどうかを確認する方法

ホットタグ

アーカイブ