2017-02-10 1 views
2

플로트 값이있는 CSV 파일을 필터링하는 동안 문제가 있습니다. 보시다시피, $data 배열에, 세 번째 플로트가 유효하지filter_var_array를 사용하여 플로트 필터링하는 방법

<?php 
$data = array(0.152,20,.205); 
$result = filter_var_array($data,FILTER_VALIDATE_FLOAT); 
var_dump($result); 
?> 

, 그것은 정수 부분이없는, 그래서 $result에 거짓을받을 것으로 예상하지만 : 여기가하는 일의 예입니다 불행하게도, 여기에 내가 무엇을 얻을 수 있습니다 :

16:24 $ php -q script.php 
array(3) { 
    [0]=> 
    float(0.152) 
    [1]=> 
    float(20) 
    [2]=> 
    float(0.205) 
} 

플로트는 점 앞에 0을 추가하여 필터에 의해 수정됩니다. 값이 처음부터 올바르지 않기 때문에 이것은 도움이되지 않습니다. 이것을 피하는 방법? 내가 대신이 필터를 사용하는 경우

:: 편집 :

는 :

16:28 $ php -q script.php 
array(3) { 
    [0]=> 
    string(4) "0152" 
    [1]=> 
    string(2) "20" 
    [2]=> 
    string(4) "0205" 

나는 수레를 확인이 Invalide 통과하지 못한 만드는 방법을 알고하지 않습니다 FILTER_SANITIZE_NUMBER_FLOAT을, 나는 제로 수 .

+2

'.205'가 유효한 부동이 발생한다 (앞의 0이 추가) 변환되고, 따라서 유효한 부동 소수점으로 간주하고있다. 'php -r "echo .205;"'는 "0.205"를 출력합니다. 요구 사항을 충족시키지 못하면 사용자 지정 필터링을 구현해야합니다. –

답변

2

FILTER_VALIDATE_FLOAT은 유효성 검사를 통과 한 값을 float로 변환합니다. 이 보일 것입니다

.205

docs

+0

질문 : @ 루크,이 필터 FILTER_VALIDATE_FLOAT는 플로트를 .205에서 0.205로 수정합니까? – Somar

+0

@Somar 어떤 파일 안에 있습니까? 코드는 어레이에서 읽는 것을 보여줍니다. float 값을 필터로 사용하는 파일 내부에 – Luke

+0

이 있습니다. 나는 질문에 말했다. 나는 CSV 파일을 가지고있다. – Somar

관련 문제