Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

श्रेणी पदानुक्रम (PHP/MySQL)

आसन्न सूची मॉडल का उपयोग करते समय, आप एक पास में संरचना उत्पन्न कर सकते हैं।

एक पास अभिभावक से लिया गया- चाइल्ड ऐरे स्ट्रक्चर (सितंबर 2007; नैट वेनर द्वारा) :

$refs = array();
$list = array();

$sql = "SELECT item_id, parent_id, name FROM items ORDER BY name";

/** @var $pdo \PDO */
$result = $pdo->query($sql);

foreach ($result as $row)
{
    $ref = & $refs[$row['item_id']];

    $ref['parent_id'] = $row['parent_id'];
    $ref['name']      = $row['name'];

    if ($row['parent_id'] == 0)
    {
        $list[$row['item_id']] = & $ref;
    }
    else
    {
        $refs[$row['parent_id']]['children'][$row['item_id']] = & $ref;
    }
}

लिंक किए गए आलेख से, आउटपुट के लिए सूची बनाने के लिए यहां एक स्निपेट दिया गया है। यह पुनरावर्ती है, यदि नोड के लिए कोई बच्चा है, तो यह उपट्री बनाने के लिए खुद को फिर से बुलाता है।

function toUL(array $array)
{
    $html = '<ul>' . PHP_EOL;

    foreach ($array as $value)
    {
        $html .= '<li>' . $value['name'];
        if (!empty($value['children']))
        {
            $html .= toUL($value['children']);
        }
        $html .= '</li>' . PHP_EOL;
    }

    $html .= '</ul>' . PHP_EOL;

    return $html;
}

संबंधित प्रश्न:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kubernetes पर बनाए जाने पर mysql कंटेनर को इनिशियलाइज़ कैसे करें?

  2. टेक्स्ट क्षेत्र में वापस आउटपुट करते समय, मैं टेक्स्ट क्षेत्र से प्राप्त डेटा को ठीक से कैसे साफ कर सकता हूं?

  3. अमान्य सिंटैक्स त्रुटि प्रकार =हाइबरनेट द्वारा उत्पन्न डीडीएल में MyISAM

  4. कई शब्दों के खिलाफ mysql मैच

  5. पीडीओ यूटीएफ -8 एन्कोडिंग मुद्दा?