Ваш код, вероятно, прав, но ваши утверждения возвращают ложное значение.
Вам необходимо отладить его.
Я напишу вам пример того, как это сделать, включая документацию.
Пример:
$test1 = false;
$test2 = null;
$test3 = [];
$test4 = 'asd';
$test5 = 1;
if ($test1)
{
echo 'Valid';
}
else
{
echo 'False';
}
// Output: 'False'
// This is because $test1 = false. The if statement will check if $test1 is set/true and not false.
if ( ! $test2)
{
echo 'NULL';
}
else
{
echo 'NOT NULL';
}
// Output: 'NULL'
// $test2 is NULL/EMPTY (NULL = not valid)
// For the if( ! ..) part, will say if not.
if (is_array($test3))
{
echo 'Is array';
}
else
{
echo 'Is not an array';
}
// Output: 'Is array'
// [] is short for array(); $test3 is an array, so your if statement will continue as valid.
if ( ! empty($test4) || is_integer($test5))
{
echo 'Valid';
}
else
{
echo 'Is not valid';
}
// Output: 'Valid'
// Both $test4 and $test5 pass the if statement. Because $test4 is not empty OR $test5 is an integer.
Относится к вашему коду:
<code>echo '<pre>';
var_dump($cat[$k]);
echo '
';умереть;if (isset ($ cat [$ k] -> id) && $ cat [$ k] -> id == $ nav [$ lvl-1] -> id);
Вам необходимо «отладить» свой код.Вам необходимо установить $cat[$k]->id
, если он не установлен, он вернет false.
Во время отладки вы проверяете, правильно ли анализируются данные.
Документация:
Вместо того, чтобы сразу дать вам правильный ответ, я хочу показать вам, как отладить ваш код и понять, как работает isset()
,Если у вас есть вопрос, просто дайте мне знать в комментарии.
Удачи!