Hướng dẫn how do i convert a string to an integer in php? - làm cách nào để chuyển đổi một chuỗi thành một số nguyên trong php?

Bạn thường không cần phải làm điều này, vì PHP sẽ ép buộc loại 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 một cách rõ ràng loại, hãy đúc nó:

$num = "3.14";
$int = [int]$num;
$float = [float]$num;

Đã trả lời ngày 16 tháng 12 năm 2011 lúc 4:13Dec 16, 2011 at 4:13

lừa dối ♦ lừa dốideceze

499K81 Huy hiệu vàng720 Huy hiệu bạc867 Huy hiệu Đồng81 gold badges720 silver badges867 bronze badges

10

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

  1. Đúc các chuỗi vào các loại 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 thao tác toán học trên chuỗi:

    $num = "10" + 1;
    $num = floor["10.1"];
    
  3. Sử dụng

    $num = intval["10"];
    $num = floatval["10.1"];
    
    5 hoặc
    $num = intval["10"];
    $num = floatval["10.1"];
    
    6:

    $num = intval["10"];
    $num = floatval["10.1"];
    
  4. Sử dụng

    $num = intval["10"];
    $num = floatval["10.1"];
    
    7.

Đã trả lời ngày 16 tháng 12 năm 2011 lúc 4:12Dec 16, 2011 at 4:12

Fardjadfardjadfardjad

Huy hiệu vàng 19,6K66 gold badges50 silver badges67 bronze badges

9

Để tránh các vấn đề, hãy thử

$num = intval["10"];
$num = floatval["10.1"];
8. Vài ví dụ:


Sắc nét

6.4884 Huy hiệu vàng44 Huy hiệu bạc39 Huy hiệu đồng4 gold badges44 silver badges39 bronze badges

Đã trả lời ngày 2 tháng 6 năm 2014 lúc 13:28Jun 2, 2014 at 13:28

Gopecagopecagopeca

1.48311 huy hiệu bạc12 Huy hiệu đồng11 silver badges12 bronze badges

4

Trong bất cứ điều gì [ngôn ngữ lỏng lẻo], bạn luôn có thể chuyển một chuỗi vào 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 vào 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, bởi vì sau khi đúc để nổi, nó có thể được thay đổi một cách khó lường, do bản chất của số float.

Đã trả lời ngày 16 tháng 12 năm 2011 lúc 4:52Dec 16, 2011 at 4:52

Ý thức chung thông thường của bạnYour Common Sense

156K39 Huy hiệu vàng209 Huy hiệu bạc333 Huy hiệu Đồng39 gold badges209 silver badges333 bronze badges

9

Thay vì phải chọn việc chuyển đổi

$num = intval["10"];
$num = floatval["10.1"];
9 thành

0 hoặc

1, bạn chỉ cần thêm

2 vào đó và PHP sẽ tự động chuyển đổi kết quả thành loại 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;

Đã trả lời ngày 3 tháng 6 năm 2015 lúc 9:35Jun 3, 2015 at 9:35

WebNeatWebneatwebNeat

2.6681 Huy hiệu vàng18 Huy hiệu bạc22 Huy hiệu đồng1 gold badge18 silver badges22 bronze badges

2

Vâng, có một phương pháp tương tự trong PHP, nhưng người ta ít biết đến nỗi bạn sẽ hiếm khi nghe về nó. Nó là một toán tử số học có tên là "Nhận dạng", như được mô tả ở đây:identity", as described here:

Các nhà khai thác số lượng

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

$a = +$a;

Đã trả lời ngày 10 tháng 5 năm 2018 lúc 18:31May 10, 2018 at 18:31

5

Nếu bạn muốn có được một chiếc phao cho


3, nhưng int cho

4, bạn có thể viết:

$number = [$value == [int] $value] ? [int] $value : [float] $value;

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

Đã trả lời ngày 15 tháng 9 năm 2014 lúc 4:44Sep 15, 2014 at 4:44

9

Bạn có thể dùng:

[int][your value];

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

intval[string]

Đã trả lời ngày 16 tháng 12 năm 2011 lúc 4:13Dec 16, 2011 at 4:13

noobie-phpnoobie-phpnoobie-php

6.29715 Huy hiệu vàng49 Huy hiệu bạc94 Huy hiệu Đồng15 gold badges49 silver badges94 bronze badges

6

Trong PHP, bạn có thể sử dụng các hàm


5 để chuyển đổi chuỗi thành số.

Đã trả lời ngày 16 tháng 12 năm 2011 lúc 4:11Dec 16, 2011 at 4:11

Kashif Khankashif KhanKashif Khan

2.58514 Huy hiệu bạc14 Huy hiệu đồng14 silver badges14 bronze badges

2

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

$num = [int] "10";
$num = [double] "10.12"; // same as [float] "10.12";
0

Đã trả lời ngày 18 tháng 7 năm 2016 lúc 8:13Jul 18, 2016 at 8:13

BOYKODEVBOYKODEVBoykodev

8201 Huy hiệu vàng10 Huy hiệu bạc21 Huy hiệu đồng1 gold badge10 silver badges21 bronze badges

2

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 thực sự có chứa giá trị số hợp lệ trước và chỉ sau đó 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


6 và sau đó
$num = intval["10"];
$num = floatval["10.1"];
6:

$num = [int] "10";
$num = [double] "10.12"; // same as [float] "10.12";
1

Đã trả lời ngày 10 tháng 8 năm 2013 lúc 17:16Aug 10, 2013 at 17:16

TASEENBTASEENBtaseenb

1.3481 Huy hiệu vàng15 Huy hiệu bạc 30 Huy hiệu Đồng1 gold badge15 silver badges30 bronze badges

1

Đây là chức năng đạt được những gì bạn đang tìm kiếm. Trước tiên, chúng tôi kiểm tra xem giá trị có thể được hiểu là một số không, nếu vậy chúng tôi biến nó thành INT và một chiếc phao. Nếu int và float giống nhau [ví dụ: 5 == 5.0] thì chúng ta sẽ 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 cho rằng bạn cần độ chính xác của phao và trả về giá trị đó. Nếu giá trị không phải là số, chúng ta sẽ đưa ra một cảnh báo và trả lại null.

$num = [int] "10";
$num = [double] "10.12"; // same as [float] "10.12";
2

Đã trả lời ngày 1 tháng 1 năm 2016 lúc 19:51Jan 1, 2016 at 19:51

Nếu bạn muốn giá trị số của chuỗi và bạn không muốn chuyển đổi nó thành Float/Int vì bạn không chắc chắn, thủ thuật này sẽ chuyển đổi nó thành loại thích hợp:

$num = [int] "10";
$num = [double] "10.12"; // same as [float] "10.12";
3

Nguồn: //www.php.net/manual/en/function.is-numeric.php#107326

Đã trả lời ngày 29 tháng 9 năm 2020 lúc 8:11Sep 29, 2020 at 8:11

Klodomaklodomaklodoma

Phù hiệu vàng 3.9431 Huy hiệu bạc27 Huy hiệu đồng1 gold badge27 silver badges39 bronze badges

1

Chỉ nhân số với 1 để chuỗi được chuyển đổi thành số loại.

$num = [int] "10";
$num = [double] "10.12"; // same as [float] "10.12";
4

Đã trả lời ngày 2 tháng 11 năm 2019 lúc 15:44Nov 2, 2019 at 15:44

RolodeFrolodefrolodef

1171 Huy hiệu bạc3 Huy hiệu đồng1 silver badge3 bronze badges

3

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

$num = [int] "10";
$num = [double] "10.12"; // same as [float] "10.12";
5

Đã trả lời ngày 3 tháng 10 năm 2016 lúc 13:29Oct 3, 2016 at 13:29

Thuốcdrugan

7308 Huy hiệu bạc10 Huy hiệu đồng8 silver badges10 bronze badges

5

Tôi đã đọc qua các câu trả lời và không thấy ai đề cập đến việc cảnh báo lớn nhất trong chuyển đổi số của PHP.

Câu trả lời được nâng cấp nhiều nhất cho thấy làm như sau:

$num = [int] "10";
$num = [double] "10.12"; // same as [float] "10.12";
6

Thật là tuyệt vời. PHP không đúc trực tiếp. Nhưng nếu chúng ta làm như sau thì sao?

$num = [int] "10";
$num = [double] "10.12"; // same as [float] "10.12";
7

PHP có xem xét các chuyển đổi như vậy hợp lệ không?

Rõ ràng là có.yes.

PHP đọc chuỗi cho đến khi nó tìm thấy ký tự phi hình số đầu tiên cho loại cần thiết. Có nghĩa là đối với số nguyên, các ký tự số là [0-9]. Kết quả là, nó đọc


8, vì nó nằm trong phạm vi ký tự [0-9], nó tiếp tục đọc. Đọc

9 và dừng ở đó vì nó không nằm trong phạm vi [0-9].

Tương tự sẽ xảy ra nếu bạn được đúc để nổi hoặc gấp đôi. PHP sẽ đọc


8, sau đó

9, sau đó
// 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;
2, sau đó
// 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;
3 và sẽ dừng ở
// 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;
4 vì nó không hợp lệ ký tự số float.

Do đó,

// 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;
5 đánh giá là sai, nhưng
// 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;
6 đánh giá thành
// 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;
7.

Xem thêm:

//www.php.net/manual/en/langage.operators.comparison.php Cách chuyển đổi được thực hiện trong khi so sánh

Đã trả lời ngày 15 tháng 6 năm 2019 lúc 17:52Jun 15, 2019 at 17:52

DragasdragasDragas

9569 Huy hiệu bạc24 Huy hiệu đồng9 silver badges24 bronze badges

2

Đâ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, Integer, Double và Real.

$num = [int] "10";
$num = [double] "10.12"; // same as [float] "10.12";
8

Loại gọi với Parsenumeric Set thành true sẽ chuyển đổi chuỗi số trước khi kiểm tra loại.

Thus:

loại ["5", true] sẽ trả về int

Loại ["3.7", true] 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 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 mục 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à chức năng, hãy thêm trường hợp này vào công tắc:

$num = [int] "10";
$num = [double] "10.12"; // same as [float] "10.12";
9

Đã trả lời ngày 23 tháng 1 năm 2014 lúc 20:30Jan 23, 2014 at 20:30

Dieter Gribnitzdieter GribnitzDieter Gribnitz

4.7822 Huy hiệu vàng40 Huy hiệu bạc36 Huy hiệu đồng2 gold badges40 silver badges36 bronze badges

Được rồi, vì vậy tôi chỉ gặp vấn đề này. Vấn đề của tôi là các số/chuỗi trong câu hỏi có số lượng chữ số khác nhau. Một số không có số thập phân, những người khác có một số. Vì vậy, đối với tôi, sử dụng


0,

1,
$a = +$a;
0,
$a = +$a;
1 hoặc
$a = +$a;
2 đều cho tôi kết quả khác nhau tùy thuộc vào số.

Vì vậy, giải pháp đơn giản ... chia chuỗi cho 1 phía máy chủ. Điều này buộc nó đến một số và giữ lại tất cả các chữ số trong khi cắt giảm 0 không cần thiết. Nó không đẹp, nhưng nó hoạt động.

$num = "10" + 1;
$num = floor["10.1"];
0

Đã trả lời ngày 21 tháng 10 năm 2021 lúc 0:13Oct 21, 2021 at 0:13

MikelgmikelgMikelG

4294 Huy hiệu bạc16 Huy hiệu Đồng4 silver badges16 bronze badges

4

Tôi thấy rằng trong JavaScript, một cách đơn giản để chuyển đổi 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ì ký hiệu "+" có nhiều cách sử dụng trong javascript, trong khi ký hiệu "*" hoàn toàn cho phép nhân toán.

Dựa trên những gì tôi đã thấy ở đây liên quan đến PHP tự động sẵn sàng giải thích một chuỗi chứa chữ số dưới dạng một số [và các nhận xét về việc thêm, vì trong PHP "+" hoàn toàn cho việc bổ sung toán học], thủ thuật nhân này hoạt động tốt Đối với PHP cũng vậy.

Tôi đã thử nghiệm 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 trang trí [] cho nó, trước khi nhân với 1.

Đã trả lời ngày 25 tháng 2 năm 2014 lúc 14:58Feb 25, 2014 at 14:58

1

Muộn bữa tiệc, nhưng đây là một cách tiếp cận khác:

$num = "10" + 1;
$num = floor["10.1"];
1

Đã trả lời ngày 10 tháng 9 năm 2020 lúc 10:46Sep 10, 2020 at 10:46

BennibenniBenni

1.02311 huy hiệu bạc14 Huy hiệu đồng11 silver badges14 bronze badges

1

$num = "10" + 1;
$num = floor["10.1"];
2

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

Đã trả lời ngày 16 tháng 12 năm 2011 lúc 4:13Dec 16, 2011 at 4:13

PritompritomPritom

1.2648 Huy hiệu vàng19 Huy hiệu bạc37 Huy hiệu đồng8 gold badges19 silver badges37 bronze badges

2

$num = "10" + 1;
$num = floor["10.1"];
3

Đã trả lời ngày 11 tháng 4 lúc 10:53Apr 11 at 10:53

HefhefHef

3653 Huy hiệu bạc11 Huy hiệu đồng3 silver badges11 bronze badges

Bạn có thể dùng:

$num = "10" + 1;
$num = floor["10.1"];
4

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

$num = "10" + 1;
$num = floor["10.1"];
5

Hoặc

$num = "10" + 1;
$num = floor["10.1"];
6

Đã trả lời ngày 29 tháng 9 năm 2013 lúc 19:18Sep 29, 2013 at 19:18

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

$num = "10" + 1;
$num = floor["10.1"];
7

Đã trả lời ngày 28 tháng 8 năm 2018 lúc 11:20Aug 28, 2018 at 11:20

3

Có một cách:

$num = "10" + 1;
$num = floor["10.1"];
8

Sử dụng

$a = +$a;
3 sẽ không hoạt động, vì
$a = +$a;
4 là:
$num = intval["10"];
$num = floatval["10.1"];
9.

Sử dụng sự kết hợp của

$a = +$a;
6 và sau đó
$a = +$a;
7, nó được chuyển đổi thành dạng "thật". Nếu đó là một
$num = intval["10"];
$num = floatval["10.1"];
9 thực sự thì nó sẽ xuất hiện sai.

$num = "10" + 1;
$num = floor["10.1"];
9

Sẽ đầu ra:

$a = +$a;
9

Đã trả lời ngày 28 tháng 5 năm 2019 lúc 19:04May 28, 2019 at 19:04

AnugaanugaAnuga

2.34016 Huy hiệu bạc25 Huy hiệu đồng16 silver badges25 bronze badges

1

Bây giờ chúng ta đang ở trong một kỷ nguyên mà việc đánh máy nghiêm ngặt/mạnh mẽ có ý nghĩa quan trọng hơn trong PHP, tôi sử dụng

$number = [$value == [int] $value] ? [int] $value : [float] $value;
0:

$num = intval["10"];
$num = floatval["10.1"];
0

Đã trả lời ngày 21 tháng 8 năm 2021 lúc 19:49Aug 21, 2021 at 19:49

AndyandyAndy

4.7665 Huy hiệu vàng33 Huy hiệu bạc56 Huy hiệu Đồng5 gold badges33 silver badges56 bronze badges

2

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

$num = intval["10"];
$num = floatval["10.1"];
1

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

Tài liệu PHP

AKSU

5.1815 Huy hiệu vàng23 Huy hiệu bạc39 Huy hiệu Đồng5 gold badges23 silver badges39 bronze badges

Đã trả lời ngày 4 tháng 9 năm 2013 lúc 10:53Sep 4, 2013 at 10:53

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

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

$num = intval["10"];
$num = floatval["10.1"];
2

Đã trả lời ngày 29 tháng 4 năm 2015 lúc 20:34Apr 29, 2015 at 20:34

Nếu bạn không biết trước nếu bạn có một chiếc phao hoặc số nguyên và nếu chuỗi có thể chứa các ký tự đặc biệt [như không gian, €, v.v.] và nếu nó có thể chứa nhiều hơn 1 chấm hoặc dấu phẩy, bạn có thể sử dụng điều này hàm số:
and if the string may contain special characters [like space, €, etc],
and if it may contain more than 1 dot or comma,
you may use this function:

$num = intval["10"];
$num = floatval["10.1"];
3

Đã trả lời ngày 12 tháng 2 năm 2020 lúc 17:44Feb 12, 2020 at 17:44

4

$num = intval["10"];
$num = floatval["10.1"];
4

Đã trả lời ngày 9 tháng 9 năm 2020 lúc 18:54Sep 9, 2020 at 18:54

Làm cách nào để chuyển đổi một chuỗi thành int?

Sử dụng Integer.ParseInt [] để chuyển đổi chuỗi thành số nguyên Phương thức này trả về chuỗi dưới dạng loại nguyên thủy int.Nếu chuỗi không chứa một số nguyên hợp lệ thì nó sẽ ném một con sốFormatException. to Convert a String to an Integer This method returns the string as a primitive type int. If the string does not contain a valid integer then it will throw a NumberFormatException.

ParseInt trong PHP là gì?

Định nghĩa và sử dụng Phương thức ParseInt phân tích giá trị như một chuỗi và trả về số nguyên đầu tiên.Một tham số radix chỉ định hệ thống số sẽ sử dụng: 2 = nhị phân, 8 = octal, 10 = thập phân, 16 = hexadecimal.Nếu Radix bị bỏ qua, JavaScript giả định Radix 10.parses a value as a string and returns the first integer. A radix parameter specifies the number system to use: 2 = binary, 8 = octal, 10 = decimal, 16 = hexadecimal. If radix is omitted, JavaScript assumes radix 10.

Làm thế nào kiểm tra xem chuỗi là số nguyên PHP?

Hàm is_numeric [] kiểm tra xem một biến là số hoặc chuỗi số.Hàm này trả về true [1] nếu biến là số hoặc chuỗi số, nếu không nó sẽ trả về false/không có gì.is_numeric[] function checks whether a variable is a number or a numeric string. This function returns true [1] if the variable is a number or a numeric string, otherwise it returns false/nothing.

Intval là gì?

Hàm intval [] trả về giá trị số nguyên của một biến.returns the integer value of a variable.

Bài Viết Liên Quan

Chủ Đề