为什么我的 IDE 将此变量标记为未使用?
Why does my IDE mark this variable as unused?
$freeSlots = 0; //Unused local variable 'freeSlots'. The value of the variable is overwritten immediately.
if (strtotime($endDate) === strtotime($startDate))
{
return $endSlot - $startSlot;
}
else
{
$freeSlots = (5 - $startSlot) + ($endSlot - 1);
$newTime = strtotime('+1 day', $newTime);
if (date("Y-m-d", $newTime) === $endDate)
{
return $freeSlots;
}
do
{
if (!(date('N', $newTime) >= 6))
{
$freeSlots += 4;
}
$newTime = strtotime('+1 day', $newTime);
} while (date("Y-m-d", $newTime) !== $endDate);
}
return $freeSlots; //but is clearly used here
为什么我的 PhpStrom 说这个变量是 unsed 的?
编辑:
我的主要问题是,仅仅在 else 中使用它是不够的,因为那是一个不同的范围。 return 在 else 之外。
因为你不需要这条线
$freeSlots = 0; //Unused local variable 'freeSlots'. The value of the variable is overwritten immediately.
因为 IDE 告诉这个变量将被这一行立即覆盖:
$freeSlots = (5 - $startSlot) + ($endSlot - 1);
所以第一行其实是完全不需要的,可以删掉。您从不使用 $freeSlots,您正在重新定义它。
明确范围:
$freeSlots = 0; //Unused local variable 'freeSlots'. The value of the variable is overwritten immediately.
if (strtotime($endDate) === strtotime($startDate))
{
return $endSlot - $startSlot;
}
$freeSlots = (5 - $startSlot) + ($endSlot - 1);
$newTime = strtotime('+1 day', $newTime);
if (date("Y-m-d", $newTime) === $endDate)
{
return $freeSlots;
}
do
{
if (!(date('N', $newTime) >= 6))
{
$freeSlots += 4;
}
$newTime = strtotime('+1 day', $newTime);
} while (date("Y-m-d", $newTime) !== $endDate);
return $freeSlots; //but is clearly used here
上面的代码与您的代码完全相同。您不需要使用 else
。如果条件为真,则返回一个值。否则你继续。不需要别的。所以它是相同的范围。
$freeSlots = 0; //Unused local variable 'freeSlots'. The value of the variable is overwritten immediately.
if (strtotime($endDate) === strtotime($startDate))
{
return $endSlot - $startSlot;
}
else
{
$freeSlots = (5 - $startSlot) + ($endSlot - 1);
$newTime = strtotime('+1 day', $newTime);
if (date("Y-m-d", $newTime) === $endDate)
{
return $freeSlots;
}
do
{
if (!(date('N', $newTime) >= 6))
{
$freeSlots += 4;
}
$newTime = strtotime('+1 day', $newTime);
} while (date("Y-m-d", $newTime) !== $endDate);
}
return $freeSlots; //but is clearly used here
为什么我的 PhpStrom 说这个变量是 unsed 的?
编辑:
我的主要问题是,仅仅在 else 中使用它是不够的,因为那是一个不同的范围。 return 在 else 之外。
因为你不需要这条线
$freeSlots = 0; //Unused local variable 'freeSlots'. The value of the variable is overwritten immediately.
因为 IDE 告诉这个变量将被这一行立即覆盖:
$freeSlots = (5 - $startSlot) + ($endSlot - 1);
所以第一行其实是完全不需要的,可以删掉。您从不使用 $freeSlots,您正在重新定义它。
明确范围:
$freeSlots = 0; //Unused local variable 'freeSlots'. The value of the variable is overwritten immediately.
if (strtotime($endDate) === strtotime($startDate))
{
return $endSlot - $startSlot;
}
$freeSlots = (5 - $startSlot) + ($endSlot - 1);
$newTime = strtotime('+1 day', $newTime);
if (date("Y-m-d", $newTime) === $endDate)
{
return $freeSlots;
}
do
{
if (!(date('N', $newTime) >= 6))
{
$freeSlots += 4;
}
$newTime = strtotime('+1 day', $newTime);
} while (date("Y-m-d", $newTime) !== $endDate);
return $freeSlots; //but is clearly used here
上面的代码与您的代码完全相同。您不需要使用 else
。如果条件为真,则返回一个值。否则你继续。不需要别的。所以它是相同的范围。