나는 값, 이러한 유형의 변환 할 '3'
, '2.34'
, '0.234343'
숫자로 등. JavaScript에서는을 사용할 수 Number()
있지만 PHP에서 사용할 수있는 비슷한 방법이 있습니까?
Input Output
'2' 2
'2.34' 2.34
'0.3454545' 0.3454545
답변
PHP는 대부분의 상황에서 유형을 강제하기 때문에 일반적으로이 작업을 수행 할 필요는 없습니다. 명시 적으로 유형을 변환하려는 경우 유형을 캐스트 하십시오.
$num = "3.14";
$int = (int)$num;
$float = (float)$num;
답변
그렇게하는 몇 가지 방법이 있습니다.
-
문자열을 숫자 기본 데이터 유형으로 캐스트하십시오.
$num = (int) "10"; $num = (double) "10.12"; // same as (float) "10.12";
-
문자열에서 수학 연산을 수행하십시오.
$num = "10" + 1; $num = floor("10.1");
-
사용
intval()
또는floatval()
:$num = intval("10"); $num = floatval("10.1");
-
사용하십시오
settype()
.
답변
문제를 피하기 위해 시도하십시오 intval($var)
. 몇 가지 예 :
<?php
echo intval(42); // 42
echo intval(4.2); // 4
echo intval('42'); // 42
echo intval('+42'); // 42
echo intval('-42'); // -42
echo intval(042); // 34 (octal as starts with zero)
echo intval('042'); // 42
echo intval(1e10); // 1410065408
echo intval('1e10'); // 1
echo intval(0x1A); // 26 (hex as starts with 0x)
echo intval(42000000); // 42000000
echo intval(420000000000000000000); // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8); // 42
echo intval('42', 8); // 34
echo intval(array()); // 0
echo intval(array('foo', 'bar')); // 1
?>
답변
(느슨하게 타이핑 된) 언어에서 0을 추가하여 항상 문자열을 숫자로 변환 할 수 있습니다.
그러나 PHP는이 변수를 사용할 때 자동으로 수행하므로 출력시 문자열로 캐스팅되기 때문에 의미가 거의 없습니다.
부동으로 캐스팅 한 후 부동 숫자의 특성으로 인해 예기치 않게 변경 될 수 있기 때문에 점으로 구분 된 숫자를 문자열로 유지하려고 할 수 있습니다.
답변
당신이 사용할 수있는:
(int)(your value);
또는 다음을 사용할 수 있습니다.
intval(string)
답변
에 대한 부동 소수점을 원 $value = '0.4'
하지만 int에 대해서는 다음 $value = '4'
과 같이 쓸 수 있습니다.
$number = ($value == (int) $value) ? (int) $value : (float) $value;
조금 더럽지 만 작동합니다.
답변
당신은 항상 그것에 0을 추가 할 수 있습니다!
Input Output
'2' + 0 2 (int)
'2.34' + 0 2.34 (float)
'0.3454545' + 0 0.3454545 (float)