Hàm chuyển chuỗi thành số php

answer

780

Hàm chuyển chuỗi thành số php

Bạn thường không cần phải làm điều này, vì PHP sẽ ép buộc kiểu cho bạn trong hầu hết các trường hợp. Đối với các tình huống mà bạn muốn chuyển đổi rõ ràng loại, hãy bỏ nó:

$num = "3.14";
$int = (int)$num;
$float = (float)$num;

780 hữu ích 5 bình luận chia sẻ

answer

128

Hàm chuyển chuỗi thành số php

Có một số cách để làm như vậy:

  1. Truyền chuỗi thành các kiểu dữ liệu nguyên thủy số:

    $num = (int) "10";
    $num = (double) "10.12"; // same as (float) "10.12";
  2. Thực hiện các phép toán trên chuỗi:

    $num = "10" + 1;
    $num = floor("10.1");
  3. Sử dụng intval()hoặc floatval():

    $num = intval("10");
    $num = floatval("10.1");
  4. Sử dụng settype().

128 hữu ích 5 bình luận chia sẻ

answer

45

Hàm chuyển chuỗi thành số php

Trong bất kỳ ngôn ngữ nào (gõ lỏng lẻo), bạn luôn có thể truyền một chuỗi thành một số bằng cách thêm số 0 vào nó.

Tuy nhiên, có rất ít ý nghĩa trong việc này vì PHP sẽ tự động thực hiện tại thời điểm sử dụng biến này và dù sao nó cũng sẽ được chuyển thành một chuỗi tại thời điểm đầu ra.

Lưu ý rằng bạn có thể muốn giữ các số chấm dưới dạng chuỗi, vì sau khi truyền để nổi, nó có thể bị thay đổi một cách khó lường, do tính chất của số float.

45 hữu ích 5 bình luận chia sẻ

answer

38

Hàm chuyển chuỗi thành số php

Để tránh các vấn đề cố gắng intval($var). Vài ví dụ:

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
?>

38 hữu ích 1 bình luận chia sẻ

answer

22

Hàm chuyển chuỗi thành số php

Bạn có thể dùng:

(int)(your value);

Hoặc bạn có thể sử dụng:

intval(string)

22 hữu ích 5 bình luận chia sẻ

answer

17

Hàm chuyển chuỗi thành số php

Nếu bạn muốn có một float cho $value = '0.4', nhưng int for $value = '4', bạn có thể viết:

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

Nó là một chút bẩn, nhưng nó hoạt động.

17 hữu ích 3 bình luận chia sẻ

answer

14

Hàm chuyển chuỗi thành số php

Bạn có thể sử dụng (int)_value_ví dụ.

$string = '100';
$int = (int)$string;

Xem Kiểu tung hứng .

14 hữu ích 0 bình luận chia sẻ

answer

12

Hàm chuyển chuỗi thành số php

Bạn luôn có thể thêm số không vào nó!

Input             Output
'2' + 0           2 (int)
'2.34' + 0        2.34 (float)
'0.3454545' + 0   0.3454545 (float)

12 hữu ích 0 bình luận chia sẻ

answer

12

Hàm chuyển chuỗi thành số php

Thay vì phải chọn chuyển đổi stringthành inthoặc float, bạn chỉ cần thêm một 0vào nó và PHP sẽ tự động chuyển đổi kết quả thành một kiểu số.

// 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;

12 hữu ích 0 bình luận chia sẻ

answer

11

Hàm chuyển chuỗi thành số php

Trong PHP bạn có thể sử dụng các intval(string) or floatval(string)hàm để chuyển đổi chuỗi thành số.

11 hữu ích 1 bình luận chia sẻ

answer

10

Hàm chuyển chuỗi thành số php

Chỉ cần một lưu ý nhỏ cho các câu trả lời có thể hữu ích và an toàn hơn trong một số trường hợp. Bạn có thể muốn kiểm tra xem chuỗi có thực sự chứa giá trị số hợp lệ trước không và sau đó chỉ chuyển đổi nó thành loại số (ví dụ: nếu bạn phải thao tác dữ liệu đến từ db chuyển đổi ints thành chuỗi). Bạn có thể sử dụng is_numeric()và sau đó floatval():

$a = "whatever"; // any variable

if (is_numeric($a)) 
    var_dump(floatval($a)); // type is float
else 
    var_dump($a); // any type

10 hữu ích 0 bình luận chia sẻ

answer

8

Hàm chuyển chuỗi thành số php

Đây là chức năng đạt được những gì bạn đang tìm kiếm. Đầu tiên chúng ta kiểm tra xem giá trị có thể được hiểu là một số không, nếu vậy chúng ta biến nó thành một số nguyên và một số float. Nếu int và float giống nhau (ví dụ: 5 == 5.0) thì chúng ta trả về giá trị int. Nếu int và float không giống nhau (ví dụ: 5! = 5.3) thì chúng tôi giả sử bạn cần độ chính xác của float và trả về giá trị đó. Nếu giá trị không phải là số, chúng tôi sẽ đưa ra cảnh báo và trả về null.

function toNumber($val) {
    if (is_numeric($val)) {
        $int = (int)$val;
        $float = (float)$val;

        $val = ($int == $float) ? $int : $float;
        return $val;
    } else {
        trigger_error("Cannot cast $val to a number", E_USER_WARNING);
        return null;
    }
}

8 hữu ích 0 bình luận chia sẻ

answer

6

Hàm chuyển chuỗi thành số php

Tôi đã thấy rằng trong JavaScript, một cách đơn giản để chuyển đổi một chuỗi thành một số là nhân nó với 1. Nó giải quyết vấn đề nối, bởi vì biểu tượng "+" có nhiều cách sử dụng trong JavaScript, trong khi biểu tượng "*" hoàn toàn là cho phép nhân toán học.

Dựa trên những gì tôi thấy ở đây về PHP tự động sẵn sàng diễn giải một chuỗi chứa chữ số là một số (và các ý kiến ​​về việc thêm, vì trong PHP, "+" hoàn toàn là để thêm vào toán học), thủ thuật nhân này hoạt động tốt cho PHP, cũng có.

Tôi đã kiểm tra nó và nó hoạt động ... Mặc dù tùy thuộc vào cách bạn có được chuỗi, bạn có thể muốn áp dụng hàm trim () cho chuỗi đó, trước khi nhân với 1.

6 hữu ích 0 bình luận chia sẻ

answer

6

Hàm chuyển chuỗi thành số php

Đây là một chức năng tôi đã viết để đơn giản hóa mọi thứ cho chính mình:

Nó cũng trả về các phiên bản tốc ký của boolean, số nguyên, gấp đôi và thực.

function type($mixed, $parseNumeric = false)
{        
    if ($parseNumeric && is_numeric($mixed)) {
        //Set type to relevant numeric format
        $mixed += 0;
    }
    $t = gettype($mixed);
    switch($t) {
        case 'boolean': return 'bool'; //shorthand
        case 'integer': return 'int';  //shorthand
        case 'double': case 'real': return 'float'; //equivalent for all intents and purposes
        default: return $t;
    }
}

Kiểu gọi với parseNumeric được đặt thành true sẽ chuyển đổi các chuỗi số trước khi kiểm tra loại.

Như vậy:

loại ("5", đúng) sẽ trả về int

loại ("3.7", đúng) sẽ trả về float

loại ("500") sẽ trả về chuỗi

Chỉ cần cẩn thận vì đây là một loại phương pháp kiểm tra sai và biến thực tế của bạn vẫn sẽ là một chuỗi. Bạn sẽ cần phải chuyển đổi biến thực tế thành đúng loại nếu cần. Tôi chỉ cần nó để kiểm tra xem cơ sở dữ liệu có nên tải id hoặc bí danh hay không, do đó không có bất kỳ hiệu ứng bất ngờ nào vì nó sẽ được phân tích cú pháp dưới dạng chuỗi trong thời gian chạy.

Chỉnh sửa

Nếu bạn muốn phát hiện nếu các đối tượng là các chức năng, hãy thêm trường hợp này vào công tắc:

case 'object': return is_callable($mixed)?'function':'object';

6 hữu ích 0 bình luận chia sẻ

answer

6

Hàm chuyển chuỗi thành số php

Ngoài câu trả lời của Boykodev, tôi đề nghị điều này:

Input             Output
'2' * 1           2 (int)
'2.34' * 1        2.34 (float)
'0.3454545' * 1   0.3454545 (float)

6 hữu ích 4 bình luận chia sẻ

answer

5

Hàm chuyển chuỗi thành số php

Đơn giản là bạn có thể viết như thế này:

php
    $data = ["1","2","3","4","5"];
    echo json_encode($data, JSON_NUMERIC_CHECK);
?>

5 hữu ích 3 bình luận chia sẻ

answer

5

Hàm chuyển chuỗi thành số php

Bạn chỉ có thể sử dụng intval()hàm để chuyển đổi một chuỗi thành int.

5 hữu ích 0 bình luận chia sẻ

answer

5

Hàm chuyển chuỗi thành số php

    $num = "3.14";
    $int = (int)$num; // Output = 3
    $float = (float)$num; // Output = 3.14
    $double = (double)$num; // Output = 3.14

Bạn có thể chuyển đổi một chuỗi thành một số trong PHP bằng cách sử dụng truyền.

5 hữu ích 0 bình luận chia sẻ

answer

5

Hàm chuyển chuỗi thành số php

Vâng, có một phương thức tương tự trong PHP, nhưng nó ít được biết đến mà bạn sẽ hiếm khi nghe về nó. Nó là một toán tử số học gọi là " danh tính ", như được mô tả ở đây:

Toán tử số học

Để chuyển đổi một chuỗi số thành một số, hãy làm như sau:

$a = +$a;

5 hữu ích 0 bình luận chia sẻ

answer

4

Hàm chuyển chuỗi thành số php

$a = "10";

$b = (int)$a;

Bạn có thể sử dụng điều này để chuyển đổi một chuỗi thành một int trong PHP .

4 hữu ích 3 bình luận chia sẻ

answer

4

Hàm chuyển chuỗi thành số php

Bạn có thể dùng:

((int) $var)   ( but in big number it return 2147483647 :-) )

Nhưng giải pháp tốt nhất là sử dụng:

if (is_numeric($var))
    $var = (isset($var)) ? $var : 0;
else
    $var = 0;

Hoặc là

if (is_numeric($var))
    $var = (trim($var) == '') ? 0 : $var;
else
    $var = 0;

4 hữu ích 0 bình luận chia sẻ

answer

4

Hàm chuyển chuỗi thành số php

Hãy thử sử dụng một cái gì đó như thế này:

php
    $string = '5'; // The $ string is a variable to hold string '5'
    $int = intval($string); // $int is the converted string to integer $int = intval('5');
    echo $int; // 5
?>

4 hữu ích 0 bình luận chia sẻ

answer

2

Hàm chuyển chuỗi thành số php

Bạn có thể thay đổi kiểu dữ liệu như sau

$number = "1.234";

echo gettype ($number) . "\n"; //Returns string

settype($number , "float");

echo gettype ($number) . "\n"; //Returns float

Vì lý do lịch sử, "nhân đôi" được trả lại trong trường hợp thả nổi.

Tài liệu PHP

2 hữu ích 0 bình luận chia sẻ

answer

2

Hàm chuyển chuỗi thành số php

PHP sẽ làm điều đó cho bạn trong giới hạn

php
   $str = "3.148";
   $num = $str;

   printf("%f\n", $num);
?>

2 hữu ích 3 bình luận chia sẻ

answer

2

Hàm chuyển chuỗi thành số php

Tất cả các đề xuất mất loại số.

Đây dường như là một cách thực hành tốt nhất:

function str2num($s){
// Returns a num or FALSE
    $return_value =  !is_numeric($s) ? false :               (intval($s)==floatval($s)) ? intval($s) :floatval($s);
    print "\nret=$return_value type=".gettype($return_value)."\n";
}

2 hữu ích 0 bình luận chia sẻ

answer

2

Hàm chuyển chuỗi thành số php

Đối với trường hợp cụ thể của bạn, bạn chỉ có thể nhân với 1 để chuyển đổi chuỗi thành số trong PHP. PHP sẽ tự động xử lý số nguyên và số nguyên.

$num = "2.12";
var_dump(is_float($num)); // bool(false)
var_dump(is_int($num)); // bool(false)
var_dump(is_string($num)); // bool(true)

$num = $num*1;
var_dump(is_float($num)); // bool(true)
var_dump(is_int($num)); // bool(false)
var_dump(is_string($num)); // bool(false)

2 hữu ích 0 bình luận chia sẻ

answer

0

Hàm chuyển chuỗi thành số php

Tôi nhận được câu hỏi "giả sử bạn đang viết hàm dựng sẵn để truyền một số nguyên thành một chuỗi trong PHP, bạn sẽ viết hàm đó như thế nào" trong một cuộc phỏng vấn lập trình. Đây là một giải pháp.

$nums = ["0","1","2","3","4","5","6","7","8","9"];
$int = 15939; 
$string = ""; 
while ($int) { 
    $string .= $nums[$int % 10]; 
    $int = (int)($int / 10); 
} 
$result = strrev($string);

0 hữu ích 0 bình luận chia sẻ

answer

2

Hàm chuyển chuỗi thành số php

$a = "7.2345";
$b = round(((float)$a),0);

2 hữu ích 1 bình luận chia sẻ