【问题标题】:Wrong result array_map function错误的结果 array_map 函数
【发布时间】:2017-07-06 17:44:11
【问题描述】:

这是我的输入数组...

$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 position [3] = 0,一定有“Hertha BSC...”?

【问题讨论】:

  • 你希望Hertha BSC - SV Werder Bremen 转换成什么整数?
  • 好的,我明白了这个问题。这只是一个 int 值的数组。但是如何为字符串构建一个数组来读取字符串值呢?
  • 不使用intval?
  • 举一个你想要的结果的例子。

标签: php arrays dictionary


【解决方案1】:

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

获取变量的整数值

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])
);

【讨论】:

  • 要详细说明“不清楚”,更准确的措辞可能是:“比要求完全由数字字符组成的字符串的整数值更模棱两可”。
  • 数组应该是 [0]=> 57 [1] => 5 [2] => 7 [3] => Hertha BSC - SV Werder Bremen 这可能吗?也许一个数组用于 int,另一个用于字符串值?
  • 如果你在我的例子中var_dump'd(现在名字很糟糕)$int_array var,那就是你会得到的!如果它完全由数字组成(/\d+/),它只会在分解的数组项上使用intval。字符串被单独留下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多