PHPで文字列を数値に変換するにはどうすればよいですか?

2011年12月16日に質問されました。  ·  閲覧回数 1.9M回  ·  ソース

Sara picture
2011年12月16日

これらのタイプの値、 '3''2.34''0.234343'などを数値に変換したいと思います。 JavaScriptではNumber()使用できますが、PHPで利用できる同様の方法はありますか?

Input             Output
'2'               2
'2.34'            2.34
'0.3454545'       0.3454545

回答

deceze picture
2011年12月16日
1104

PHPはほとんどの状況で型を強制変換するため、通常はこれを行う必要はありません。 型を明示的に変換したい場合は、次のようにキャストします。

$num = "3.14";
$int = (int)$num;
$float = (float)$num;
fardjad picture
2011年12月16日
188

これを行うには、いくつかの方法があります。

  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()ます。

gopeca picture
2014年06月02日
66

問題を回避するには、 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
?>
Your Common Sense picture
2011年12月16日
48

どんな(緩く型付けされた)言語でも、ゼロを追加することで、いつでも文字列を数値にキャストできます。

ただし、PHPはこの変数の使用時に自動的に実行し、出力時にとにかく文字列にキャストされるため、これにはほとんど意味がありません。

浮動小数点数にキャストした後、浮動小数点数の性質上、予期せず変更される可能性があるため、点線の数値を文字列として保持することをお勧めします。

noobie-php picture
2011年12月16日
25

次を使用できます。

(int)(your value);

または、次を使用できます。

intval(string)
Aleksei Akireikin picture
2014年09月15日
25

$value = '0.4' floatを取得したいが、 $value = '4' intを取得したい場合は、次のように記述できます。

$number = ($value == (int) $value) ? (int) $value : (float) $value;

少し汚れていますが、動作します。

webNeat picture
2015年06月03日
20

stringintまたはfloatに変換するかどうかを選択する代わりに、 0を追加するだけで、PHPが自動的に変換します。結果を数値型にします。

// Being sure the string is actually a number
if (is_numeric($string))
    $number = $string + 0;
else // Let the number be 0 if the string is not a number
    $number = 0;
aldemarcalazans picture
2018年05月11日
19

はい、PHPにも同様の方法がありますが、あまり知られていないため、ほとんど耳にすることはありません。 これは、ここで説明するように、「アイデンティティ」と呼ばれる算術演算子です。

算術演算子

数値文字列を数値に変換するには、次のようにします。

$a = +$a;
Boykodev picture
2016年07月18日
17

いつでもゼロを追加できます!

Input             Output
'2' + 0           2 (int)
'2.34' + 0        2.34 (float)
'0.3454545' + 0   0.3454545 (float)
Kashif Khan picture
2011年12月16日
14

PHPでは、 intval(string) or floatval(string)関数を使用して文字列を数値に変換できます。