나는이 코드 블록을 제대로 실행하지 못한다.왜 처음 if 문이 항상 실행됩니까?
private function verifyImage() {
if (!is_null($this->uploads) && array_key_exists('image', $this->uploads)) {
$image = $this->uploads['image'];
$tmpPath = $image['tmp_name'];
if (!empty($tmpPath)) {
$newName = $this->userName . "." . pathinfo($image['name'],PATHINFO_EXTENSION);
move_uploaded_file($tmpPath, __ROOT__ . '/images/' . $newName);
$this->image = __WEBROOT__ . '/images/' . $newName;
}
} elseif (isset($this->formInput['currentImage'])) {
$this->image = trim($this->formInput['currentImage']);
} elseif (isset($this->formInput['image']) && !empty($this->formInput['image'])) {
$this->image = trim($this->formInput['image']);
} else {
$this->setError('image',"Error with image field");
}
}
$ this-> 업로드 $입니다 HTML 포스트에서 _FILES
$ this-> formInput는 HTML 포스트에서 $ _POST입니다
문제는 불을 지르고 쇼 숨겨진 필드 'currentImage'함께 그것은 분명하게 설정되어있다. 그러나 끝에있는 else 루프가 설정됩니다. 그것은 단지 $ _POST에 대해 true를 반환 [ 'currentImage'] 나는 다음과 같이 코드를 변경하면 설정되는 :
에서 : } elseif (isset($this->formInput['currentImage'])) {
에 : 그래서 } if (isset($this->formInput['currentImage'])) {
ELSEIF 또는 false를 반환 '다른 경우', 하지만 간단한 if가 true를 반환합니까? 당신은 단순히 여기에서 이해할 필요가 무엇
소리가 난다 else 조건을 검사조차하지 않습니다. – dave
첫 번째 if는 true를 반환하므로 elseif는 실행되지 않습니다. – MisterBla
'isset' 연산의 결과를 캐싱하여 코드를보다 쉽게 읽을 수 있도록 코드를 단순화하는 것이 좋습니다. – Dai