Hay như thế nào tôi có thể chuyển đổichuyển đổi 01, 02, 03, 04 .. 09 để 1,2,3,4 ... 9
01 to 1
02 to 2
tất cả các cách đến 9?
Cảm ơn
Hay như thế nào tôi có thể chuyển đổichuyển đổi 01, 02, 03, 04 .. 09 để 1,2,3,4 ... 9
01 to 1
02 to 2
tất cả các cách đến 9?
Cảm ơn
Tôi giả sử đầu vào là một chuỗi?
$str = "01";
$anInt = intval($str);
Bạn có thể nghĩ rằng 0 hàng đầu có nghĩa là điều này được hiểu là bát phân, như trong nhiều ngôn ngữ/API khác. Tuy nhiên đối số thứ hai để intval là một cơ sở. Giá trị mặc định cho điều này là 10. Điều này có nghĩa là 09-> 9. Xem bình luận đầu tiên tại trang intval, trong đó nói rằng khấu trừ cơ sở bạn có thể mong đợi chỉ xảy ra nếu bạn vượt qua 0 trong làm cơ sở.
$str = "05";
$last = $str[1];
giải pháp intval() đáng tin cậy hơn trong trường hợp này, vì nó có thể bắt được "009". –
đúng. Nhưng giải pháp của tôi nhanh hơn, và TS không nói gì về 009 :-) – Fortega
$old_nums = array("01","02","03");
foreach($old_nums as $k => $v) {
ltrim($v,"0");
}
đó là quá mức cần thiết –
Điều đó phụ thuộc hoàn toàn vào nơi các con số đến từ đâu và cách chúng được lưu trữ, phải không? Trong trường hợp này, tôi cung cấp điều này chỉ như một sự thay thế cho Doug T.'s-đã gửi và trả lời rõ ràng và chính xác và hiệu quả. –
$i = substr($input, 1, 1);
$x="01";
$x=+$x;
$x="02";
$x=+$x;
...
hoặc
$x=+"01";
nên làm việc cho cả int, và chuỗi
Nếu bạn muốn sử dụng các giải pháp biểu thức chính quy generic: 's/[0] ([0-9])/\ 1/'(thêm vào neo khi thích hợp)
$str='05';
if(strpos($str,'0')==0 && strpos($str,'0') != false){
$new = intval(substr($str,1));
}
Làm (int)$str;
thay thế. Tốc độ này nhanh hơn gấp 4 lần so với intval()
.
Nếu đầu vào được coi là int, nó sẽ được xử lý dưới dạng bát phân. (như vậy 09-> 0) – erenon
@erenon, hãy xem cập nhật của tôi. –
Thực hiện '(int) $ str;'. Nó nhanh hơn gấp 4 lần so với 'intval()'. –