[php] PHP에서 문자열을 숫자로 어떻게 변환합니까?

나는 값, 이러한 유형의 변환 할 '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;


답변

그렇게하는 몇 가지 방법이 있습니다.

  1. 문자열을 숫자 기본 데이터 유형으로 캐스트하십시오.

    $num = (int) "10";
    $num = (double) "10.12"; // same as (float) "10.12";
  2. 문자열에서 수학 연산을 수행하십시오.

    $num = "10" + 1;
    $num = floor("10.1");
  3. 사용 intval()또는 floatval():

    $num = intval("10");
    $num = floatval("10.1");
  4. 사용하십시오 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)