if($parent_id_current > 0) {
$parent_id = $parent_id_current;
$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$parent_id_current'";
$parent_id_current = $GLOBALS['db']->getOne($sql);
if($parent_id_current > 0) {
$parent_id = $parent_id_current;
$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$parent_id_current'";
$parent_id_current = $GLOBALS['db']->getOne($sql);
if($parent_id_current > 0) {
$parent_id = $parent_id_current;
$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$parent_id_current'";
$parent_id_current = $GLOBALS['db']->getOne($sql);
if($parent_id_current > 0) {
$parent_id = $parent_id_current;
$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$parent_id_current'";
$parent_id_current = $GLOBALS['db']->getOne($sql);
if($parent_id_current > 0) {
$parent_id = $parent_id_current;
$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$parent_id_current'";
$parent_id_current = $GLOBALS['db']->getOne($sql);
if($parent_id_current > 0) {
$parent_id = $parent_id_current;
}
}
}
}
}
}
} else {
$parent_id = 0;
}
我知道这是不好的做法..但是如何重写为一个好的功能结构。我知道返回会让这段代码更干净..但我不知道该把它放在哪里。
答案 0 :(得分:1)
除非我遗漏了某些东西,否则这看起来好像是在使用Do / While循环。虽然您可能需要调整函数以确保按预期进行结果集。
<?php
$key = 'password';
$hash = password_hash($key, PASSWORD_BCRYPT);
$salt = substr($hash, 7, 22);
$rehash = password_hash($key, PASSWORD_BCRYPT, ['salt' => $salt]);
if ($hash == $rehash) {
echo 'ok', PHP_EOL;
}
此外,在调试嵌套的IF语句时,如果松开了位置,请在打开的大括号右侧开始添加注释标记,并在关闭它们时将其计数。
do {
$parent_id = $parent_id_current;
$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . "WHERE cat_id = '$parent_id_current'";
$parent_id_current = $GLOBALS['db']->getOne($sql);
} while ( $parent_id_current > 0);
答案 1 :(得分:0)
将代码移动到函数并在while
循环中调用它。作为休息条件设置你的条件:
$parent_id = 0;
while ($parent_id_current > 0) {
$parent_id = $parent_id_current;
$parent_id_current = getParentId($parent_id_current);
}
function getParentId($id) {
$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$id'";
return $GLOBALS['db']->getOne($sql);
}