我有以下内容:
$front = $data->getFromTable('Front');
$back = $data->getFromTable('Back');
$side = $data->getFromTable('Side');
$top = $data->getFromTable('Top');
我想检查这些变量是否为'set'并为它们分配不同的图像,例如
if (!isset($front))
{
$this->setImage('bla bla');
}
else
{
$this->setImage('bla2 bla2');
}
有没有更有效的方法来做到这一点,而不仅仅是4 if / else语句,想象我有100个变量而不是4个。
感谢。
答案 0 :(得分:3)
很难确切地说,因为它取决于“图像”变量的变化程度。如果他们遵循某个命名约定你可能会使用如下所示的循环,如果没有,那么它可能会有很多检查,但是你可以把一个巨大的if / else链放在一个函数中设置图像的主要逻辑所以它读起来更好。
$requiredFields = ['front', 'back', 'side', 'top'];
foreach ($requiredFields as $field) {
$image = $field . 'NotSetImage.jpg';
if (isset($field)) {
$image = $field . 'SetImage.jpg';
}
$this->setImage($image);
}
仅仅是个人偏好,但我发现代码在不使用else语句的情况下更具可读性,我还发现如果你的if语句旨在评估 true ,那么它更容易理解,我不知道表示布尔值为true,但不检查图像是否未设置,而是检查是否已设置。
最后一点,但最好是对empty()
检查,而不是isset()
检查您的值。
答案 1 :(得分:1)
您可以使用单行if / else语句:
$front = !isset($front) ? $this->setImage('bla bla') : $this->setImage('bla2 bla2');
答案 2 :(得分:0)
你也可以这样做:
$requiredFields = ['front', 'back', 'side', 'top'];
foreach ($requiredFields as $field) {
if (!isset($data->getFromTable($field))) $this->setImage('bla bla'); else $this->setImage('bla2 bla2');
}