错误的结果array_map函数

时间:2017-07-06 17:44:12

标签: php arrays dictionary

这是我的输入数组...

$var = Array ( [0] => 57;5;7;Hertha BSC - SV Werder Bremen [1] => Heim )

我使用此功能将其更改为另一个数组

$int_array = array_map("intval", explode(";", $var[0]));

当我调用这个数组时,我得到了这个结果

Array ( [0] => 57 [1] => 5 [2] => 7 [3] => 0 ) 

但是为什么Array位置[3] = 0.必须有“Hertha BSC ......”?

1 个答案:

答案 0 :(得分:1)

根据PHP文档,intval函数的描述是:

  

获取变量的整数值

Hertha BSC - SV Werder Bremen的整数值(;上爆炸"57;5;7;Hertha BSC - SV Werder Bremen"创建的数组的第4个元素)不清楚。

在此上下文中输入字符串不会产生有意义的结果。所以,我不认为它是错误的结果。

这里的东西可能会让你更接近我认为你之后的东西,不过

$var = [
    '57;5;7;Hertha BSC - SV Werder Bremen',
    'Heim'
];

$int_array = array_map(
    function($item) {
        // In cases where the exploded array item is not entirely made up of digits, return it as a string.
        if (0 === preg_match('/\d+/', $item)) {
            return $item;
        }

        // else, cast to int.
        return intval($item);
    },
    explode(";", $var[0])
);