以下代码:
$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?
以下代码:
$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?
当前回答
PHP 7.4风格:
$ids = array_map(fn(string $x): int => (int) $x, explode(',', $string));
其他回答
<?php
$string = "1,2,3";
$ids = explode(',', $string );
array_walk( $ids, function ( &$id )
{
$id = (int) $id;
});
var_dump( $ids );
$arr = ["adfsf", "*&^%$#^", "23", "25", "29"];
function convertArrayStringToArrayInt($arr)
{
$result = [];
foreach($arr as $value) {
if ((int)$value !== 0) {
$result[] = (int)$value;
}
}
return $result;
}
$result = convertArrayStringToArrayInt($arr);
var_dump($result);
结果是这样的
array(3) {
[0]=> int(23)
[1]=> int(25)
[2]=> int(29)
}
PHP 7.4风格:
$ids = array_map(fn(string $x): int => (int) $x, explode(',', $string));
在Mark的解决方案中,如果您试图解析“test”之类的字符串,则将返回数组([0]=> int 0)。
$integerIDs = array_map( 'intval', array_filter( explode(',', $string), 'is_numeric' ) );
如果你有这样的数组:
$runners = ["1","2","3","4"];
如果你想把它们转换成整数并保持在数组中,下面应该做的工作:
$newArray = array_map( create_function('$value', 'return (int)$value;'),
$runners);