Apakah ketiga string ini terpisah, atau satu string dengan baris baru memisahkan setiap angka? Saya perhatikan ketika mengedit pertanyaan Anda bahwa Anda memiliki <br>tag yang memisahkan angka-angka; apakah mereka sebenarnya bagian dari tali Anda?
Peringatan $ str: = '0'. Ditujukan dalam jawaban saya, berdasarkan jawaban ini.
Mike Weir
mengapa terlalu rumit? dan mike itu $ str + = 0; seperti yang dijelaskan di sini: nabtron.com/kiss-code
Nabeel Khan
@NabeelKhan Itu tidak akan menjawab pertanyaan, yang tidak meminta untuk mengubah string ke integer. Lihat komentar pada jawaban Svisstack untuk mengapa ini bukan solusi yang bagus.
lonesomeday
@lonesomeday Anda harus membaca pertanyaannya dengan cermat di mana ia menyebutkan: "perhatikan bahwa angka di atas dihasilkan secara acak." jadi mereka sudah bilangan bulat :)
Saya baru saja mencoba (int) "00009384783473"(angka acak) dan hasil saya adalah 2147483647. Namun jika saya melemparkannya sebagai pelampung, sepertinya berfungsi dengan baik. Strange
JamesHalsall
manual mengatakan bahwa "Ukuran integer bergantung pada platform, meskipun nilai maksimum sekitar dua miliar adalah nilai biasa (yang ditandatangani 32 bit)"
llamerr
1
Tidak aneh. Integer dalam php naik ke 2 ^ 31, yaitu 2147483647. Untuk angka yang lebih besar, Anda harus menggunakan solusi berbasis string lonesomeday.
awm
1
Casting to float mungkin terlihat berhasil, tetapi pada titik tertentu Anda akan mendapatkan kesalahan pembulatan.
awm
1
bagaimana dengan ide mengevaluasi masing-masing string dengan menggunakan pernyataan loop, bahwa ketika sampai ke angka nol (atau string), itu akan mendapatkan indeks dari digit itu dan menjatuhkan semua nol sebelumnya kemudian gema string yang dimulai dengan nilai bukan nol pertama ..
Gerald
10
Tidak tahu mengapa orang menggunakan metode yang begitu rumit untuk mencapai hal yang begitu sederhana! Dan regex? Wow!
Ini sepertinya solusi yang lebih sederhana, tetapi tidak menangani ukuran string apa pun seperti jawaban lainnya. Anda mengonversi dari string ke integer dan kemudian kembali sebagai string - lebih sederhana untuk hanya mempersingkat string.
Mike Weir
1
Menarik, tetapi saya tidak tahu apakah itu solusi terbaik dengan jenis konversi.
Jonathanbell
1
Tolong jangan lakukan ini ... ini sebabnya PHP mendapat reputasi buruk
Dan F.
9
Mirip dengan saran lain, kecuali tidak akan menghapus nol aktual:
Latar belakang pada Regex: ^sinyal awal dari string dan +sinyal lebih atau tidak sama sekali dari tanda sebelumnya. Oleh karena itu, regex ^0+cocok dengan semua nol pada awal string.
Ajay Kumar menawarkan gema paling sederhana + $ numString;
Saya menggunakan ini:
echo round($val ="0005");
echo $val =0005;//both output 5
echo round($val =00000648370000075845);
echo round($val ="00000648370000075845");//output 648370000075845, no need to care about the other zeroes in the number//like with regex or comparative functions. Works w/wo single/double quotes
Sebenarnya setiap fungsi matematika akan mengambil nomor dari "string" dan memperlakukannya seperti itu. Ini jauh lebih sederhana daripada fungsi regex atau komparatif. Saya melihat itu di php.net, tidak ingat di mana.
<br>
tag yang memisahkan angka-angka; apakah mereka sebenarnya bagian dari tali Anda?Jawaban:
ltrim
:sumber
sumber
(int) "00009384783473"
(angka acak) dan hasil saya adalah 2147483647. Namun jika saya melemparkannya sebagai pelampung, sepertinya berfungsi dengan baik. StrangeTidak tahu mengapa orang menggunakan metode yang begitu rumit untuk mencapai hal yang begitu sederhana! Dan regex? Wow!
Ini dia, cara termudah dan paling sederhana (seperti yang dijelaskan di sini: https://nabtron.com/kiss-code/ ):
sumber
Mirip dengan saran lain, kecuali tidak akan menghapus nol aktual:
Atau seperti yang disarankan (pada PHP 5.3), operator ternary steno dapat digunakan:
sumber
$str = ltrim($str, '0') ?: '0';
- tidak ada panggilan trim yang berlebihan.Anda dapat menambahkan "+" dalam variabel Anda,
contoh:
sumber
Regex sudah diusulkan, tetapi tidak dengan benar:
output kemudian:
Latar belakang pada Regex:
^
sinyal awal dari string dan+
sinyal lebih atau tidak sama sekali dari tanda sebelumnya. Oleh karena itu, regex^0+
cocok dengan semua nol pada awal string.sumber
preg_replace() expects at least 3 parameters, 2 given
Saya tidak berpikir preg_replace adalah jawabannya .. utas lama tetapi kebetulan mencari ini hari ini. Hanya casting dan int adalah pemenangnya.
sumber
Saya Tetap dengan cara ini.
ini sangat sederhana. hanya melewatkan string, hilangkan nol mulai dari string.
sumber
Ajay Kumar menawarkan gema paling sederhana + $ numString; Saya menggunakan ini:
Sebenarnya setiap fungsi matematika akan mengambil nomor dari "string" dan memperlakukannya seperti itu. Ini jauh lebih sederhana daripada fungsi regex atau komparatif. Saya melihat itu di php.net, tidak ingat di mana.
sumber
Dengan asumsi Anda ingin run-on dari tiga nol atau lebih dihapus dan contoh Anda adalah satu string:
Anda dapat membuat pola regex sesuai dengan yang Anda butuhkan jika asumsi saya tidak aktif.
Bantuan ini?
sumber