我有一个看起来像这样的对象
zen_categories_ul_generator Object
(
[root_category_id] => 0
[max_level] => 6
[data] => Array
(
[0] => Array
(
[19] => Array
(
[name] => Brushes
[count] => 0
)
[29] => Array
(
[name] => Clips
[count] => 0
)
[2] => Array
(
[name] => Combs
[count] => 0
)
[27] => Array
(
[name] => Jewellery
[count] => 0
)
)
[1] => Array
(
[57] => Array
(
[name] => Testing
[count] => 0
)
)
我想循环遍历$ this-> data [0]级别的所有信息,我使用
foreach($this->data[0] as $category_id => $category) {
$result .= $category_id.' - '.$category['name'];
}
return $result;
但这只是数组中的最后一项。因此,在这种情况下,它只会有27件珠宝,但其他阵列物品都不会被退回。
我做错了什么?
感谢
NB我只需循环数据[0] - 而不是数据[1]!
编辑 - 这是一个包含更多代码的粘贴框,以便更容易理解我尝试做什么以及我是如何做的。感激不尽的任何帮助答案 0 :(得分:-1)
问题: 好的,所以你想循环遍历所有信息$ this-> data [0],来渲染一个菜单。
实际上,你自己非常接近解决方案。 用于呈现产品项的行是:
$result .= '<a href="' . $category_id . '">'.$category['name'] . '</a> (' . $category['count'] . ')';
以下是工作示例,它独立运行。
您可以将其另存为menu.php
并进行测试。
我不得不评论zen_ *函数,但我认为相关部分是渲染,对吧?
class zen_categories_ul_generator
{
function setTestData($data) { $this->data = $data; }
function buildMenu() {
$result = '';
// removed home link, unchanged and not important in this example
// submenu
$result .= '<li class="submenu">';
$result .= '<a href="#">Products</a>';
$count = 0;
foreach($this->data[0] as $category_id => $category) {
$count++;
$result .= '<ul class="level2">';
$result .= '<li class="submenu">';
//$result .= '<a href="' . zen_href_link(FILENAME_DEFAULT, 'cPath=' . $category_id) . '">'.$category['name'].'</a>'.$count;
$result .= '<a href="' . $category_id . '">'.$category['name'] . '</a> (' . $category['count'] . ')';
$result .= '</li>';
$result .= '</ul>';
}
$result .= '</li> Items:' . $count;
return $result;
}
}
$object = new zen_categories_ul_generator;
// ok, lets add your example data from outside to the object, in order to test the rendering
$data = array(
0 => array(
19 => array('name' => 'Brushes', 'count' => 5),
29 => array('name' => 'Clips', 'count' => 2),
2 => array('name' => 'Combs', 'count' => 1),
27 => array('name' => 'Jewellery', 'count' => 3)
)
);
$object->setTestData($data);
// render the menu
echo $object->buildMenu();
<强>结果强>
Count是迭代次数=类别中的产品数量。
产品名称后面的计数器来自数组,键#34;计数&#34;。