[英]Converting comma-separated string of single-quoted numbers to int array
我有一個字符串:
'24','27','38'
我想轉換它:
(
[0] => 24
[1] => 27
[2] => 38
)
轉換: https : //3v4l.org/oDPDl
array_map('intval', explode(',', $string))
給出:
Array
(
[0] => 0
[1] => 0
[2] => 0
)
基本上, array_map()
在數字沒有像‘24,27,38’那樣被引用時起作用,但我需要一種處理引用數字的技術。
一種解決方案是遍歷數組,但我不想這樣做。 我可以僅使用 php 函數(不是 控制結構——例如foreach()
)來實現上述目標嗎?
使用以下方法:
$str = "'24','27','38'";
$result = array_map(function($v){ return (int) trim($v, "'"); }, explode(",", $str));
var_dump($result);
輸出:
array(3) {
[0]=>
int(24)
[1]=>
int(27)
[2]=>
int(38)
}
$arr = explode (",", str_replace("'", "", $str));
foreach ($arr as $elem)
$array[] = trim($elem) ;
不循環:
$str= "'24','27','38'";
$arr = array_map("intval", explode(",", str_replace("'", "", $str)));
var_dump($arr);
輸出:
array(3) {
[0]=>
int(24)
[1]=>
int(27)
[2]=>
int(38)
}
如果您要求, sscanf()
可以立即返回類型轉換值。
這是一種不使用顯式循環的技術: sscanf(preg_replace())
代碼:(演示)
var_export(sscanf($string, preg_replace('/\d+/', '%d', $string)));
輸出:
array (
0 => 24,
1 => 27,
2 => 38,
)
或者一些開發人員可能會發現這更專業/直觀(其他人會不同意):(演示)
var_export(filter_var_array(explode("','", trim($string, "'")), FILTER_VALIDATE_INT));
// same output as above
或者這個替代方案利用了更常用的本機功能:
var_export(
array_map(
function($v) {
return (int)$v;
},
explode("','", trim($string, "'"))
)
);
簡化為:
var_export(array_map('intval', explode("','", trim($string, "'"))));
// same output as above
對於不關心輸出數組中新生成元素的數據類型的任何人,這里有一些返回字符串元素的工作技術:( Demo )
var_export(explode("','", trim($string, "'")));
var_export(preg_split('/\D+/', $string, -1, PREG_SPLIT_NO_EMPTY));
var_export(preg_match_all('/\d+/', $string, $m) ? $m[0] : []);
var_export(filter_var_array(explode(',', $string), FILTER_SANITIZE_NUMBER_INT));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.