簡體   English   中英

將逗號分隔的單引號字符串字符串轉換為 int 數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM