在PHP中将字符串数组转换为整数数组

10

我有一个数组:

$TaxIds=array(2) { [0]=> string(1) "5" [1]=> string(2) "10" } 

我需要转换成这个:

我需要将它转换成这样:

$TaxIds=array(2) { [0]=> int(5) [1]=> int(10) } 

简单的方法???


PHP是一种动态语言。它将字符串中的数字值作为数字而不是字符串使用。$TaxIds[0] + $TaxIds[1]将输出15。 - Abdul Rehman
2
$TaxIds[1] = (int)$TaxIds[1]; - ka_lin
9个回答

23

@george的回答的简化版本如下:

$TaxIds = array_map('intval', $TaxIds);

更多信息请参见 array_map

虽然这个问题很久以前就被问了,但它可能对某些人有用


14
您可以使用 array_map 函数。
$TaxIds = array_map(function($value) {
    return intval($value);
}, $TaxIds);

3
自 PHP 7.4 开始,可以使用箭头函数语法在一行中编写它: $TaxIds = array_map(fn($value) => intval($value), $TaxIds); - John Linhart

1

使用array_map的简单解决方案

$TaxIds=array_map(function ($v) {return (int)$v;},$TaxIds);

0

这个问题有很多解决方案。其中一些已经发布了。您可以使用foreach的另一个解决方案。

 foreach($TaxIds as &$taxId) {
    $taxId = intval($taxId);
 }

然而,我认为你不需要将它转换为整数。PHP会检测到您是否要进行数字操作并动态转换它。


0
array_walk($array, function(&$value, &$key) {
    settype($value, "integer");
});

0

你可以使用 for 循环

for($i = 0; $i < count($TaxIds);$i++) {
    $TaxIds[$i] = (int) $TaxIds[$i];
}

0

试试这个:

$TaxIds = ["5", "10"];
$TaxIds = array_map(function($elem) { return intval($elem); }, $TaxIds);
var_dump($TaxIds);

var_dump 输出:

array(2) { [0]=> int(5) [1]=> int(10) }

0
$TaxIds = array( "1" ,"5", "2" ,"10");
$TaxIds = array_map(function($arr) {
    return intval($arr);
}, $TaxIds);

var_dump($TaxIds);

输出

array (size=4)
  0 => int 1
  1 => int 5
  2 => int 2
  3 => int 10

-3
你可以尝试这个:
$arr = array("1", "2");
$my = json_encode($arr, JSON_NUMERIC_CHECK);
$dec = json_decode($my, true);
var_dump($dec);

输出:array(2) { [0]=> int(1) [1]=> int(2) }

或者,正如其他人建议的那样,您可以使用array_map

$arr = array("1", "2");
$arr = array_map(function($value) {
    return intval($value);
}, $arr);
var_dump($arr);

输出: array(2) { [0]=> int(1) [1]=> int(2) }

编辑: 如果您期望在数组中实际字符串,请使用以下代码:

$arr = array("1", "2");
$arr = array_map(function($value) {
       return is_numeric($value) ? intval($value) : $value
}, $arr);

1
很可能是因为您不必要地将其转换为JSON。 - Zach Saucier
OP没有指示数组将包含无法解析为整数的字符串,或者需要对这些值进行什么操作。如果这是OP需要的内容,可以通过调整传递给array_map的函数轻松实现。使用JSON序列化仍然是不必要的。 - Asad Saeeduddin
@Criesto return is_numeric($value) ? intval($value) : $value @Criesto 返回 is_numeric($value) ? intval($value) : $value - Asad Saeeduddin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接