Bagaimana cara mengonversi string ke angka di PHP?

670

Saya ingin mengkonversi jenis nilai, '3', '2.34', '0.234343', dll untuk nomor. Dalam JavaScript kita dapat menggunakan Number(), tetapi apakah ada metode serupa yang tersedia di PHP?

Input             Output
'2'               2
'2.34'            2.34
'0.3454545'       0.3454545
Sara
sumber
63
Pembaca berhati-hatilah: tidak ada jawaban nyata untuk pertanyaan ini :(
Matthieu Napoli
@MatthieuNapoli Jawabannya adalah bahwa biasanya Php menentukannya untuk Anda - salah satu keistimewaan dari sistem tipe dinamis.
Ngarai Kolob
12
Dengan semua rantai ketidakpastian dan 'biasanya'.
27
2
@MatthieuNapoli Bagaimana jenis casting bukan "jawaban nyata"? Anda bahkan dapat memeriksa jenisnya setelah Anda mengetik jika Anda ingin menjadi bayi tentang hal itu
Kolob Canyon
3
@MatthieuNapoli Saya senang Anda menjelaskan maksud Anda bahwa ada lebih dari satu cara untuk menguliti kucing, daripada tidak ada cara untuk melakukan ini. Casting sangat penting dalam operasi basis data, misalnya. Misalnya pada kueri PDO yang diparameterisasi, kadang-kadang akan ada perjuangan untuk parser untuk menyadari itu adalah angka dan bukan string, dan kemudian Anda berakhir dengan 0 di bidang bilangan bulat karena Anda tidak melemparkan string ke int pada langkah parameter.
stubsthewizard

Jawaban:

1032

Anda biasanya tidak perlu melakukan ini, karena PHP akan memaksa jenis ini untuk Anda di sebagian besar keadaan. Untuk situasi di mana Anda ingin secara eksplisit mengonversi jenisnya, masukkan :

$num = "3.14";
$int = (int)$num;
$float = (float)$num;
tipuan
sumber
4
di sini situasinya agak berbeda Saya ingin mengonversi string apa pun (hanya berisi angka) ke angka umum. Seperti yang mungkin Anda ketahui dalam javaScript, kita dapat menggunakan parseInt () untuk mengonversi string => int atau parseFloat () untuk mengonversi string => float. tetapi secara umum javaScript menggunakan Number () untuk mengonversi string => angka. Saya ingin metode serupa di php?
Sara
4
Itu berguna bagi saya ketika saya memiliki nomor bulan yang diperoleh dari string tanggal penuh, yang saya gunakan untuk menarik nilai dari array nama ngengat. Pengecoran otomatis tidak terjadi di sini karena indeks string valid, tetapi tidak setara.
Cazuma Nii Cavalcanti
19
Bergantung pada konteksnya, mungkin tidak aman untuk menganggap bahwa itu .adalah pemisah titik desimal. en.wikipedia.org/wiki/…
Dave Jarvis
3
@Sara: Anda juga dapat membuat fungsi untuk mengubah string ke angka dengan terlebih dahulu melemparkannya ke integer, lalu untuk mengapung dan kemudian membandingkan jika kedua nilai (integer dan float) sama. Jika ya, Anda harus mengembalikan nilainya sebagai integer, jika tidak, lalu sebagai float. Semoga Anda mendapatkan idenya.
Youstay Igo
2
Ada kalanya Anda perlu mengirimkan integer ke sistem file, bukan ide yang baik untuk menunggu PHP melakukan konversi untuk Anda.
AaA
173

Ada beberapa cara untuk melakukannya:

  1. Keluarkan string ke tipe data primitif numerik:

    $num = (int) "10";
    $num = (double) "10.12"; // same as (float) "10.12";
    
  2. Lakukan operasi matematika pada string:

    $num = "10" + 1;
    $num = floor("10.1");
    
  3. Gunakan intval()atau floatval():

    $num = intval("10");
    $num = floatval("10.1");
    
  4. Gunakan settype().

fardjad
sumber
9
Perhatikan bahwa (double)itu hanya alias untuk (float).
deceze
4
@ Downvoter, saya tidak tahu apa yang salah dengan jawaban saya. Perhatikan bahwa saya memposting ini sebelum OP mengedit pertanyaannya, namun ini juga mencakup pertanyaan yang diedit ( $num = "10" + 1contoh).
fardjad
2
@ ed-ta: cukup yakin itu akan mengembalikan nilai min / max alih-alih 0 jika Anda meneruskan string ke sana. Yaitu intval("9999999999")==2147483647.
riv
6
intvalberguna karena Anda dapat menggunakannya di array_map('intval', $arrayOfStrings);mana Anda tidak dapat melakukan casting.
icc97
2
alih-alih $num = "10" + 1;lebih baik digunakan $num = "10" * 1;karena itu tidak akan mengubah nilai (elemen perkalian netral), ini pada dasarnya adalah sesuatu toNumber(..)karena jenis terakhir akan ditentukan oleh apa yang diperlukan untuk mengonversi string "10" -> (int) 10; "10.1" -> (float) 10.1;
Holly
57

Untuk menghindari masalah, cobalah intval($var). Beberapa contoh:

<?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
?>
gopeca
sumber
4
IMHO, Ini adalah satu-satunya jawaban yang benar karena itu adalah satu-satunya yang mempertimbangkan radix dari string numerik. Semua respons (bahkan yang menyarankan fungsi yang ditentukan pengguna) yang hanya menggunakan tipe gips akan gagal jika string numerik memiliki satu atau lebih nol di depan, dan string TIDAK dimaksudkan sebagai angka dengan basis oktal.
Sintaks Junkie
tahu jika saya ingin mengonversi "12.7896" menjadi 12.7896?
Agnes Palit
gunakan floatval () untuk mengonversi string menjadi float. floatval ("12.7896") akan mengembalikan 12.7896
gopeca
Mengapa ini bukan jawaban yang diterima? Sebagai orang luar PHP saya sudah tahu bahwa (int)$my_strtidak akan berhasil karena saya secara khusus berurusan dengan lik string 01dan 013bahwa saya ingin menafsirkan sebagai basis 10 ... Jadi saya ingin cara untuk secara eksplisit menyediakan basis.
Giacomo Alzetta
48

Dalam bahasa apa pun (dengan mengetik longgar), Anda selalu dapat memberikan string ke angka dengan menambahkan nol.

Namun, ada sangat sedikit pengertian dalam hal ini karena PHP akan melakukannya secara otomatis pada saat menggunakan variabel ini, dan itu akan tetap dilemparkan ke string pada saat output.

Perhatikan bahwa Anda mungkin ingin menyimpan angka putus-putus sebagai string, karena setelah casting untuk mengapung, angka itu dapat diubah tanpa dapat diprediksi, karena sifat nomor float.

Akal Sehat Anda
sumber
35
Ada banyak bahasa di mana Anda tidak dapat memberikan string ke angka dengan menambahkan nol, biasanya dianggap sebagai kesalahan daripada metode casting yang benar :).
Jan Špaček
4
honzasp benar, misalnya dalam JavaScript typeof('123'+0)memberi 'string', karena '123'+0memberi '1230'.
Oriol
5
Catatan, dalam PHP direkomendasikan bahwa sebagian besar waktu Anda menggunakan perbandingan gaya ===. Jadi, jika Anda akan membandingkan data Anda, bisa jadi sangat penting untuk tipe apa data itu disimpan.
Jonathon
Perhatikan bahwa dengan menambahkan nol Anda tidak 'casting' dalam arti sebenarnya, pada dasarnya Anda mengonversi.
CSᵠ
12
@oriol dalam javascript, Anda harus menambahkan angka ke nol 0+'123'untuk mendapatkan123
Timo Huovinen
24

Kamu bisa menggunakan:

(int)(your value);

Atau Anda dapat menggunakan:

intval(string)
noobie-php
sumber
bagaimana jika nomor yang dimasukkan adalah '2.3456' bagaimana saya mendapatkan 2.3456?
Sara
6
pertanyaannya juga tentang pelampung.
taseenb
Tunjukkan 1 baris dari OP di mana katanya mengambang? sebelum memberikan komentar dan pilihan suara lihat di Posting Asli.
noobie-php
2
Contoh ini menunjukkan float, ia bertanya bagaimana mengkonversi string numerik menjadi nilai numerik (float dan integer)
taseenb
Pertama-tama periksa apakah angka itu adalah float dengan is_float, dan jika itu berlalu kemudian dilempar ke (float)bukan (int).
Martin van Driel
24

Jika Anda ingin mendapatkan float for $value = '0.4', tetapi int for $value = '4', Anda dapat menulis:

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

Ini sedikit kotor, tetapi berhasil.

Aleksei Akireikin
sumber
3
Mungkin kurang kotor? strpos($val, '.') === false ? intval($val) : floatval($val);
jchook
4
@ jchook Mungkin lebih kotor karena bergantung pada lokal - mis. '0,4' bukannya '0,4'.
Nick Rice
Poin yang bagus. Saya kira Anda bisa menggunakan localeconv()['decimal_point']bukan '.'. Satu keuntungan dari strpossolusi ini adalah hampir 2x lebih cepat dari casting dua kali.
jchook
2
@jchook yang memecah pada kasus-kasus seperti 2.1e2, itu memiliki titik desimal, tetapi angka yang dihasilkan adalah bilangan bulat
Tomáš Blatný
1
Cukup gunakan +operator identitas:, var_dump(+'0.4', +'4')memberi Anda float dan int. php.net/manual/en/language.operators.arithmetic.php
tvanc
15

Anda selalu dapat menambahkan nol untuk itu!

Input             Output
'2' + 0           2 (int)
'2.34' + 0        2.34 (float)
'0.3454545' + 0   0.3454545 (float)
Boykodev
sumber
Saya mendapat kesalahan ini A non well formed numeric value encountered. ada ide?
Agnes Palit
15

Alih-alih harus memilih apakah akan mengonversi stringke intatau float, Anda cukup menambahkannya 0, dan PHP akan secara otomatis mengonversi hasilnya ke jenis numerik.

// 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;
webNeat
sumber
13

Di PHP Anda dapat menggunakan intval(string) or floatval(string)fungsi untuk mengonversi string menjadi angka.

Kashif Khan
sumber
4
tidak, saya ingin metode umum. yang berarti jika '5' => itu harus dikonversi ke 5 dan jika '2.345' => itu harus dikonversi ke 2.345.
Sara
13

Ya, ada metode serupa di PHP, tetapi sangat sedikit diketahui sehingga Anda jarang akan mendengarnya. Ini adalah operator aritmatika yang disebut " identitas ", seperti yang dijelaskan di sini:

Operator Aritmatika

Untuk mengonversi string numerik ke angka, lakukan hal berikut:

$a = +$a;
aldemarcalazans
sumber
Peringatan: retasan terdeteksi.
Greg
Hai @Greg. Apakah Anda mengklik tautan yang diposting di sini? Inilah yang dikatakan pengembang tentang operator ini: Konversi $ a ke int atau float yang sesuai. "Konversi", di sini, tidak dapat dipahami sebagai konversi angka-ke-angka. Mengapa? Karena dari sudut pandang aritmatika eksklusif, operator ini sama sekali tidak berguna! Mengalikan angka apa pun dengan "+1" (setara dengan fungsi identitas) sama sekali tidak berpengaruh padanya. Oleh karena itu, saya tidak dapat membayangkan utilitas lain untuk operator ini daripada konversi tipe yang disarankan di sini.
aldemarcalazans
@Reg - pasti ini kurang hack, daripada sebagian besar jawaban lainnya. Ini adalah operator bawaan, yang melakukan persis apa yang diminta. (Meskipun mungkin yang terbaik untuk pertama kali memeriksa is_numeric, jadi punya tempat untuk meletakkan kode untuk menangani string yang tidak dapat dikonversi dengan benar.)
ToolmakerSteve
Saya mengerti bahwa ini bekerja sempurna untuk menggunakan operator aritmatika untuk casting, tetapi sangat mudah untuk dilewatkan. Saya pikir itu layak peringatan.
Greg
11

Hanya sedikit catatan untuk jawaban yang dapat bermanfaat dan lebih aman dalam beberapa kasus. Anda mungkin ingin memeriksa apakah string benar-benar berisi nilai numerik yang valid terlebih dahulu dan baru kemudian mengonversinya menjadi tipe numerik (misalnya jika Anda harus memanipulasi data yang berasal dari db yang mengubah int menjadi string). Anda dapat menggunakan is_numeric()dan kemudian floatval():

$a = "whatever"; // any variable

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

Inilah fungsi yang mencapai apa yang Anda cari. Pertama kita memeriksa apakah nilainya dapat dipahami sebagai angka, jika demikian kita mengubahnya menjadi int dan float. Jika int dan float adalah sama (misalnya, 5 == 5.0) maka kami mengembalikan nilai int. Jika int dan float tidak sama (misalnya, 5! = 5.3) maka kami menganggap Anda membutuhkan ketelitian float dan mengembalikan nilai itu. Jika nilainya tidak numerik, kami memberikan peringatan dan mengembalikan nol.

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;
    }
}
CogSciGradStudent
sumber
6

Saya telah menemukan bahwa dalam JavaScript cara sederhana untuk mengonversi string menjadi angka adalah dengan mengalikannya dengan 1. Ini menyelesaikan masalah penggabungan, karena simbol "+" memiliki banyak kegunaan dalam JavaScript, sedangkan simbol "*" adalah murni untuk perkalian matematika.

Berdasarkan apa yang saya lihat di sini mengenai PHP secara otomatis bersedia menafsirkan string yang mengandung digit sebagai angka (dan komentar tentang penambahan, karena dalam PHP "+" adalah murni untuk penambahan matematis), trik gandakan ini berfungsi dengan baik untuk PHP, juga.

Saya telah mengujinya, dan itu berhasil ... Meskipun tergantung pada bagaimana Anda memperoleh string, Anda mungkin ingin menerapkan fungsi trim () padanya, sebelum mengalikan dengan 1.

vernonner3voltazim
sumber
6

Berikut adalah fungsi yang saya tulis untuk menyederhanakan hal-hal untuk diri saya sendiri:

Ini juga mengembalikan versi singkatan dari boolean, integer, double dan real.

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

Tipe panggilan dengan parseNumeric yang disetel ke true akan mengonversi string numerik sebelum memeriksa tipe.

Jadi:

ketik ("5", true) akan mengembalikan int

ketik ("3.7", true) akan mengembalikan float

ketik ("500") akan mengembalikan string

Berhati-hatilah karena ini adalah semacam metode pemeriksaan yang salah dan variabel Anda yang sebenarnya masih berupa string. Anda perlu mengonversi variabel aktual ke jenis yang benar jika perlu. Saya hanya perlu untuk memeriksa apakah database harus memuat id item atau alias, sehingga tidak memiliki efek yang tidak terduga karena itu akan diurai sebagai string pada saat run time.

Edit

Jika Anda ingin mendeteksi apakah objek berfungsi tambahkan kasus ini ke sakelar:

case 'object': return is_callable($mixed)?'function':'object';
Dieter Gribnitz
sumber
6

Selain jawaban Boykodev saya menyarankan ini:

Input             Output
'2' * 1           2 (int)
'2.34' * 1        2.34 (float)
'0.3454545' * 1   0.3454545 (float)
obat-obatan
sumber
Setelah memikirkan hal ini sedikit, saya juga dapat menyarankan pembagian dengan 1 :)
Boykodev
1
Itu intinya! :) Omong-omong solusi Anda jauh lebih baik daripada semua notasi ilmiah di atas. Terima kasih.
Narkoba
solusi ini memecahkan masalah saya. Dalam kasus saya, $id_cron = (string)date('YmdHi'); $target_id_cron = $id_cron - 1;bukannya $ target_id_cron = (int) $ id_cron - 1;
inMILD
1
Saya mendapat kesalahan ini A non well formed numeric value encounteredketika saya ingin mengubah string menjadi mengambang $num = '12,24' * 1. Ada saran?
Agnes Palit
5
$a = "10";

$b = (int)$a;

Anda dapat menggunakan ini untuk mengonversi string ke int di PHP .

Pritom
sumber
2
jika nomor yang dimasukkan adalah '7.2345' Saya tidak bisa menggunakan (int) maka saya harus menggunakan (float). Yang saya butuhkan adalah solusi umum.
Sara
1
Anda selalu dapat menggunakan double atau float.
Pritom
5

Cukup Anda dapat menulis seperti ini:

<?php
    $data = ["1","2","3","4","5"];
    echo json_encode($data, JSON_NUMERIC_CHECK);
?>
Dominic Amal Joe F
sumber
3
Sementara kode ini dapat menjawab pertanyaan, memberikan konteks tambahan tentang mengapa dan / atau bagaimana kode ini menjawab pertanyaan meningkatkan nilai jangka panjangnya.
Alex Riabov
1
Apa kau yakin tentang ini? Ini tidak akan mengonversi string menjadi angka, tetapi sebuah array ke string JSON
Nico Haase
Ya, @NicoHaase jika nomor tersebut dalam format string dalam array itu akan dikonversi menjadi angka.
Dominic Amal Joe F
5

Hanya gandakan angka dengan 1 sehingga string dikonversi menjadi nomor ketik.

//String value
$string = "5.1"
if(is_numeric($string)){
  $numeric_string = $string*1;
}
rolodef
sumber
Cukup adil, tetapi metode ini (dan trik serupa) sudah terdaftar di 24 jawaban lain untuk pertanyaan ini - saya tidak melihat nilai dalam mempostingnya lagi.
DavidW
4

Kamu bisa menggunakan:

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

Tetapi solusi terbaik adalah menggunakan:

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

Atau

if (is_numeric($var))
    $var = (trim($var) == '') ? 0 : $var;
else
    $var = 0;
Mehdi Ajdari
sumber
2

Anda dapat mengubah tipe data sebagai berikut

$number = "1.234";

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

settype($number , "float");

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

Untuk alasan historis "ganda" dikembalikan jika mengambang.

Dokumentasi PHP

David Lozano
sumber
2

Semua saran kehilangan tipe numerik.

Bagi saya ini merupakan praktik terbaik:

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";
}
Rocco Galasso
sumber
1

PHP akan melakukannya untuk Anda dalam batasan

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

   printf("%f\n", $num);
?>
Adrian Cornish
sumber
Saya tidak ingin keluar menuliskannya. Saya ingin mengonversinya dan menyimpannya dalam variabel.
Sara
1
Ini secara otomatis dikonversi menjadi pelampung. Konversi tipe longgar PHP melakukannya untuk Anda. Meskipun mungkin tidak melakukan apa yang Anda harapkan sehingga jawaban lain dengan konversi eksplisit dapat bekerja lebih baik untuk Anda.
Adrian Cornish
$ str dapat berisi '5' atau '5.258' menggunakan printf ("% f \ n", $ str) '5' akan dimasukkan sebagai 5.000000 (Saya ingin 5) untuk 5.280000 (Saya ingin 5.280000) lebih banyak poin desimal.
Sara
1

Ada jalan:

$value = json_decode(json_encode($value, JSON_NUMERIC_CHECK|JSON_PRESERVE_ZERO_FRACTION|JSON_UNESCAPED_SLASHES), true);

Menggunakan is_*tidak akan bekerja, karena variablemerupakan: string.

Menggunakan kombinasi json_encode()dan kemudian json_decode()dikonversi ke bentuk "benar". Jika itu benar stringmaka itu akan menghasilkan output yang salah.

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

var_dump($num, $int, $float);

Akan menghasilkan: string(2) "Me" int(0) float(0)

Anuga
sumber
0

Saya mendapat pertanyaan "katakanlah Anda menulis fungsi built-in untuk casting integer ke string di PHP, bagaimana Anda menulis fungsi itu" dalam sebuah wawancara pemrograman. Inilah solusinya.

$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);
Brendan
sumber
0

Saya telah membaca jawaban dan tidak melihat ada yang menyebutkan peringatan terbesar dalam konversi nomor PHP.

Jawaban yang paling banyak disarankan menyarankan melakukan hal berikut:

$str = "3.14"
$intstr = (int)$str // now it's a number equal to 3

Itu brilian. PHP melakukan casting langsung. Tetapi bagaimana jika kita melakukan yang berikut?

$str = "3.14is_trash"
$intstr = (int)$str

Apakah PHP menganggap konversi semacam itu valid?

Ternyata iya .

PHP membaca string sampai menemukan karakter non-numerik pertama untuk tipe yang diperlukan. Artinya untuk bilangan bulat, karakter numerik adalah [0-9]. Hasilnya, terbaca 3, karena berada dalam rentang karakter [0-9], ia terus membaca. Membaca .dan berhenti di sana karena itu tidak dalam kisaran [0-9].

Hal yang sama akan terjadi jika Anda dilemparkan ke float atau double. PHP akan membaca 3, lalu ., lalu 1, kemudian 4, dan berhenti ikarena itu bukan karakter numerik float yang valid.

Akibatnya, "million" >= 1000000mengevaluasi menjadi false, tetapi "1000000million" >= 1000000mengevaluasi ke true.

Lihat juga:

https://www.php.net/manual/en/language.operators.comparison.php bagaimana konversi dilakukan sambil membandingkan

https://www.php.net/manual/en/language.types.string.php#language.types.string.conversion bagaimana string dikonversi ke nomor masing-masing

Dragas
sumber
0

Jika Anda tidak tahu sebelumnya apakah Anda memiliki float atau integer,
dan jika string mungkin berisi karakter khusus (seperti spasi, €, dll.),
Dan jika string tersebut mengandung lebih dari 1 titik atau koma,
Anda dapat menggunakan ini fungsi:

// This function strip spaces and other characters from a string and return a number.
// It works for integer and float.
// It expect decimal delimiter to be either a '.' or ','
// Note: everything after an eventual 2nd decimal delimiter will be removed.
function stringToNumber($string) {
    // return 0 if the string contains no number at all or is not a string:
    if (!is_string($string) || !preg_match('/\d/', $string)) {
        return 0;
    } 

    // Replace all ',' with '.':
    $workingString = str_replace(',', '.', $string);

    // Keep only number and '.':
    $workingString = preg_replace("/[^0-9.]+/", "", $workingString);

    // Split the integer part and the decimal part,
    // (and eventually a third part if there are more 
    //     than 1 decimal delimiter in the string):
    $explodedString = explode('.', $workingString, 3);

    if ($explodedString[0] === '') {
        // No number was present before the first decimal delimiter, 
        // so we assume it was meant to be a 0:
        $explodedString[0] = '0';
    } 

    if (sizeof($explodedString) === 1) {
        // No decimal delimiter was present in the string,
        // create a string representing an integer:
        $workingString = $explodedString[0];
    } else {
        // A decimal delimiter was present,
        // create a string representing a float:
        $workingString = $explodedString[0] . '.' .  $explodedString[1];
    }

    // Create a number from this now non-ambiguous string:
    $number = $workingString * 1;

    return $number;
}
pengguna1657853
sumber
-8

Pendekatan yang berbeda:

  1. Dorong semuanya ke dalam array / array asosiatif.
  2. json_encode($your_array, JSON_NUMERIC_CHECK); secara opsional decode kembali
  3. ?
  4. Keuntungan!
Peter Mortensen
sumber
7
Stack Overflow adalah tentang Jawaban atas Pertanyaan, bukan lelucon. Saya yakin ada tempat di luar sana untuk itu, tetapi tempat ini bukan.