想要摆脱深度 - 1字段,只显示名称及其值。
功能文件
<?php
public function getLocalSubNodes($node_name){
$stmt = conn::getInstance()->prepare(" SELECT node.name, (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth FROM categories AS node, categories AS parent, categories AS sub_parent,
(
SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM categories AS node,
categories AS parent
WHERE node.left_node BETWEEN parent.left_node AND parent.right_node
AND node.name = :node_name
GROUP BY node.name
ORDER BY node.left_node
)AS sub_tree
WHERE node.left_node BETWEEN parent.left_node AND parent.right_node
AND node.left_node BETWEEN sub_parent.left_node AND sub_parent.right_node
AND sub_parent.name = sub_tree.name
GROUP BY node.name
HAVING depth <= 1
ORDER BY node.left_node");
$stmt->bindParam(':node_name', $node_name, PDO::PARAM_STR);
$stmt->execute();
return $stmt->fetchALL(PDO::FETCH_ASSOC);
}
?>
I instantiate the class calling the getLocalSubNodes functions
<?php
$hierachy = new hierachy;
$iterator = new RecursiveIteratorIterator(new recursiveArrayIterator($hierachy->getLocalSubNodes($name1)));
try {
foreach($iterator as $key=>$value)
{
echo $key.' -- '.$value.'<br />';
}
}
catch(Exception $e)
{
echo $e->getMessage();
} ?>
导致
名称 - mp3播放器
深度 - 1
名字 - CD播放器
深度 - 1
名称 - 2路无线电
深度 - 1
我只想要
名称 - mp3播放器
名字 - CD播放器
名称 - 2路无线电
希望摆脱深度。
在数据库中我没有这样一个叫做深度的字段,它似乎是在上面的查询中生成的,我需要查询来计算深度,但我不想打印深度及其值,Don'需要打印深度及其值或回显。
所以我认为它可能是每个循环。
不确定这是否是这里的问题。
感谢。
答案 0 :(得分:1)
一个简单的解决方法是在你的显示中添加一个if语句
foreach($iterator as $key=>$value)
{
if ($key <> "depth")
echo $key.' -- '.$value.'<br />';
}
答案 1 :(得分:-1)
您在此处的查询中选择了它:
SELECT node.name, (COUNT(parent.name) - 1) AS depth
因此,在您的foreach中,您需要检查所需的密钥,或检查您不想要的密钥。
foreach($iterator as $key=>$value)
{
if ($key != 'name') {
continue;
}
echo $key.' -- '.$value.'<br />';
}
作为后者的一个例子。
如果您想要所有但深度,请执行以下操作:
foreach($iterator as $key=>$value)
{
if ($key == 'depth') {
continue;
}
echo $key.' -- '.$value.'<br />';
}