का निर्माण मैं PHP icio और ftrotter के महान उदाहरण द्वारा उत्पादित में एक बहुआयामी सरणी है (मैं कर रहा हूँ सरणियों संस्करण में उपयोग ftrotterrs सरणी):पीएचपी बिना क्रम वाली सूची के लिए बहुआयामी सरणी, url पथ
Turn database result into array
मैंने इसे इस विधि में एक अनियमित सूची चौड़ाई में बनाया है:
public function outputCategories($categories, $startingLevel = 0)
{
echo "<ul>\n";
foreach ($categories as $key => $category)
{
if (count($category['children']) > 0)
{
echo "<li>{$category['menu_nl']}\n";
$this->outputCategories($category['children'], $link
, $start, $startingLevel+1);
echo "</li>\n";
}
else
{
echo "<li>{$category['menu_nl']}</li>\n";
}
}
echo "</ul>\n";
}
अब तक इतना अच्छा है।
अब मैं url_nl फ़ील्ड का उपयोग मेनू में लिंक के रूप में यूआरएल के उपयोग के लिए करना चाहता हूं। यूआरएल को पेड़ में नीचे जाने वाले प्रत्येक चरण के लिए/url_nl जोड़कर पेड़ में लिंक के डिप्टी को प्रतिबिंबित करना होता है।
मेरा लक्ष्य:
- item 1 (has link: /item_1)
* subitem 1 (has link: /item_1/subitem_1)
* subitem 2 (has link: /item_1/subitem_1)
* subsubitem 1 (has link: /item_1/subitem_2/subsubitem_1)
- item 2 (has link: /item_2)
तालिका
id
id1 (parent id)
menu_nl
url_nl
title_nl
etc
क्या मैं अब तक है: है
public function outputCategories($categories, $link, $start, $startingLevel = 0)
{
// if start not exists
if(!$start)
$start = $startingLevel;
echo "<ul>\n";
foreach ($categories as $key => $category)
{
$link.= "/".$category['url_nl'];
if($start != $startingLevel)
$link = strrchr($link, '/');
if (count($category['children']) > 0)
{
echo "<li>".$start." - ".$startingLevel.
"<a href='$link'>{$category['menu_nl']}</a> ($link)\n";
$this->outputCategories($category['children'], $link
, $start, $startingLevel+1);
echo "</li>\n";
}
else
{
$start = $startingLevel+1;
echo "<li>".$start." - ".$startingLevel.
"<a href='$link'>{$category['menu_nl']}</a> ($link)</li>\n";
}
}
echo "</ul>\n";
}
आप उदाहरण में देख के रूप में मैं एक url_nl क्षेत्र का इस्तेमाल किया है जो संक्षेप में जोड़ा गया है ताकि सूची के प्रत्येक स्तर में पथ के साथ एक लिंक हो जो यूआरएल के रूप में उपयोग किया जाता है।
किसी भी तरह, मुझे इन लिंक को बनाने में समस्याएं हैं, क्योंकि पदानुक्रम सूची में लूप करते समय उन्हें ठीक से रीसेट नहीं किया जाता है। सूची में बच्चे के पास जाने के बाद पहला व्यक्ति सही है लेकिन दूसरा नहीं।
मैं यहाँ अटक कर रहा हूँ ...
आप 'if (! $ Start)' 'if (! Isset ($ start) 'के साथ' if (! $ Start) 'को प्रतिस्थापित करना चाहते हैं। – Johan
अच्छा सुझाव! – Klaaz