以下代码:

$string = "1,2,3"
$ids = explode(',', $string);
var_dump($ids);

返回数组:

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}

我需要的值是类型int而不是类型字符串。有没有更好的方法来做到这一点比循环通过数组与foreach和转换每个字符串为int?


当前回答

这几乎比explosion (), array_map()和intval()快3倍:

$integerIDs = json_decode('[' . $string . ']', true);

其他回答

<?php
    
$string = "1,2,3";
$ids = explode(',', $string );

array_walk( $ids, function ( &$id )
{
    $id = (int) $id;
});
var_dump( $ids );

我的解决方案是在回调函数的帮助下转换每个值:

$ids = array_map( function($value) { return (int)$value; }, $ids )

你可以通过以下代码来实现这一点,

$integerIDs = array_map('intval', explode(',', $string));

这几乎比explosion (), array_map()和intval()快3倍:

$integerIDs = json_decode('[' . $string . ']', true);

在Mark的解决方案中,如果您试图解析“test”之类的字符串,则将返回数组([0]=> int 0)。

$integerIDs = array_map( 'intval', array_filter( explode(',', $string), 'is_numeric' ) );