在下面的代码中,$rows 是一个数组值,它是 MySQL 查询数据库中 TestPhase 表的结果。
<?php>
$rows = array();
$result1 = mysql_query("SELECT * FROM TestPhase where Pid<10", $db) or die("cannot select");
while($row = mysql_fetch_array($result1)) {
$rows []= array(
'id' => $row['id'],
'parent' => $row['parent'],
'name' => $row['name'],
);
}
?>
<script type="text/javascript">
var treeData = <?php echo json_encode($rows); ?>;
</script>
此代码是 js 文件的片段,用于使用查询结果和存储在 var treeData 中的值(即 $rows 数组)构建树形图。
function toTree(treeData) {
var childrenById = {};
var tnodes = {};
var i, row;
// first pass: build child arrays and initial node array
for (i=0; i<treeData.length; i++) {
row = treeData[i];
tnodes[row.id] = {name: row.name, children: []};
if (row.parent == -1) { // assume -1 is used to mark the root's "parent"
root = row.id;
} else if (childrenById[row.parent] === undefined) {
childrenById[row.parent] = [row.id];
} else {
childrenById[row.parent].push(row.id);
}
}
function expand(id) {
if (childrenById[id] !== undefined) {
for (var i=0; i < childrenById[id].length; i ++) {
var childId = childrenById[id][i];
tnodes[id].children.push(expand(childId));
}
}
return tnodes[id];
}
return expand(root);
}
console.log(toTree(treeData));
我想运行另一个 sql 查询来检查 TestOptions 表,以查看构成数组 $rows 的上述查询中返回的任何记录是否也是该表的一部分。这将是因为 $rows 数组中的每个项目或数组中的每个对象都可以通过外键连接到 TestOptions 表。
这是表 TestOption:{optionID (PK);phaseID (FK-from TestPhase table); name}
查询可能是这样的:
Select name from TestOption where phaseID IN (Select id from TestPhase);
基本上,如果 $rows 数组中返回的项目在 TestPhase 表中退出,则应该识别它并打印名称。
如果从查询到 TestPhase 表的 $rows 数组的一项连接到 TestOptions 表,我想通过打印存储在 TestOptions 表的 name 属性中的 name 值来了解这一点。
我该怎么做呢?我如何对数组的每个项目进行检查?