このようなテーブルがあり、idはカテゴリのID、nameはカテゴリの名前、pidは上位カテゴリのIDです。
ここでカテゴリ ID があり、プログラムはその上位の上位の上位を見つける必要があります...カテゴリの ID は、簡単に言えば、最上位のカテゴリの ID を見つけることです。
たとえば、「フレッシュフルーツ」のIDは13、対応する親カテゴリIDは5、5の親IDは1です。1は親カテゴリを持たず、これが最上位カテゴリになります。
昔、私が若くて無知だった頃、私は常に再帰を使用して検索し、結果をキャッシュしてパフォーマンスの問題を解決することを考えていました。
その後、テーブル全体をキャッシュして再帰的に検索してみました。
後で...無限分類に遭遇する可能性は低いようです...
最近、同僚がこの問題を「エレガントに」解決する方法を私に尋ねました。
そこで私はアイデアを思いつき、次の解決策を思いつきました:
<?php $sql = "select id, pid from tablename "; // 查询后 将结果处理成 如下数组格式 $arr = [ // id => pid 1 => 0, // 省略... 5 => 1, // 省略... 13 => 5 ]; // 建议将这数组缓存起来 $id = 13; while($arr[$id]) { $id = $arr[$id]; } echo $id; // 1
言わざるを得ません:とてもエレガントです!私自身も感心しましたし、同僚たちも地に伏して号泣しました。
ループ、判定、再帰のコードを数十行書いていたので、2行のコードに置き換えました...
上記は、トップ分類 ID を取得するための PHP 無制限分類を内容も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。