현재 위치: > 최신 기사 목록> PHP의 Ceil () 기능이 배열에서 작용할 때 오류를보고하는 이유는 무엇입니까? 이 문제를 피할 수있는 대안은 무엇입니까?

PHP의 Ceil () 기능이 배열에서 작용할 때 오류를보고하는 이유는 무엇입니까? 이 문제를 피할 수있는 대안은 무엇입니까?

M66 2025-07-10

PHP 프로그래밍에서 Ceil () 함수는 부동 소수점 번호를 반올림하는 데 사용되는 매우 일반적인 수학적 함수입니다. 예를 들어:

 echo ceil(4.3); // 산출 5

그러나 실수로 배열을 Ceil () 함수로 전달하면 오류가 발생하여 "유형 오류"또는 "매개 변수는 부동 소수점 번호 여야합니다"라는 오류가 발생합니다. CEIL () 함수는 단일 숫자 (스칼라 유형)에서만 작용할 수 있으며 배열에서 직접 작동 할 수 없기 때문입니다.

CEIL () 함수가 배열에서 작용할 때 오류를보고하는 이유는 무엇입니까?

Ceil () 함수의 정의는 다음과 같습니다.

 float ceil(float $value)

예상 매개 변수는 부동 소수점 번호 또는 스칼라 값으로 부동 소수점 번호로 변환 할 수있는 반면 배열은 복합 데이터 구조이며 암시 적으로 숫자로 변환 할 수 없습니다.

오류를 일으키는 코드 예제 :

 $values = [4.2, 5.8, 3.1];
$result = ceil($values); // 오류를보고합니다:매개 변수는 있어야합니다float,배열이 될 수 없습니다

이 코드를 실행할 때 다음과 같은 오류 가보고됩니다.

 Warning: ceil() expects parameter 1 to be float, array given

따라서 Ceil ()을 직접 사용하여 배열을 처리 할 수 ​​없습니다.

이 오류를 피하는 방법? 어떤 대안이 있습니까?

배열의 각 요소에 Ceil () 함수를 적용하려는 경우 몇 가지 일반적인 관행이 있습니다.

1. Array_Map () 함수를 사용하십시오

Array_Map ()은 배열의 각 요소에서 지정된 콜백 함수를 호출하고 처리 된 배열을 반환 할 수 있습니다.

샘플 코드 :

 $values = [4.2, 5.8, 3.1];
$ceiledValues = array_map('ceil', $values);
print_r($ceiledValues);

산출:

 Array
(
    [0] => 5
    [1] => 6
    [2] => 4
)

이것은 간단하고 성능이 좋은 접근법입니다.

2. 루프를 사용하여 배열을 통해 루프를 사용하여 하나씩 처리합니다.

기능 프로그래밍 방법을 사용하지 않으려면 전통적인 foreach traversal을 사용할 수도 있습니다.

 $values = [4.2, 5.8, 3.1];
$ceiledValues = [];
foreach ($values as $value) {
    $ceiledValues[] = ceil($value);
}
print_r($ceiledValues);

효과는 array_map () 과 동일합니다.

3. Array_map () 와 협력하기 위해 익명 함수 또는 클로저를 사용하십시오.

보다 복잡한 요소 처리를 수행 해야하는 경우 익명 기능을 전달할 수 있습니다.

 $values = [4.2, 5.8, 3.1];
$ceiledValues = array_map(function($val) {
    return ceil($val);
}, $values);
print_r($ceiledValues);

이것은 단순한 천장 작업에 중복되는 것처럼 보일 수 있지만 복잡한 요구 사항에 따라 매우 유연합니다.

요약

  • Ceil () 함수는 단일 부동 소수점 번호 만 허용 할 수 있으며 배열로 전달할 수 없으며 오류 가보고됩니다.

  • 배열의 각 요소에 Ceil ()을 적용하면 Array_Map ( 'Ceil', $ Array)을 사용하는 것이 좋습니다.

  • 기존 루프도 동일한 기능을 구현할 수 있지만 Array_Map ()은 더 간단합니다.

  • 실제 요구에 따라 익명 기능을 사용하여 Array_Map () 와 협력 할 수 있습니다.

이것은 유형 오류를 피할뿐만 아니라 코드를보다 읽기 쉽고 간결하게 만듭니다.