array_map不提供空数组

时间:2015-07-19 12:08:50

标签: php arrays

我有下面的一行,它接受一个字符串,用','将它分解为一个数组,然后为每个数组项修剪任何空格。

   $essentialArray = array_map('trim', explode(',', $essential_skills));

但是当$essential_skills string = "" $essentialArray等于Array ( [0] => )

但我需要它等于Array(),以便我可以在其上调用empty()

3 个答案:

答案 0 :(得分:0)

这是函数的正常和逻辑行为。

以这种方式看待:explode()调用返回什么?具有单个元素的数组,该元素是空字符串。 array_map()电话根本不会改变。

所以你可能会问:为什么explode('')会产生一个带有单个元素的数组,这个元素是空字符串?那么,为什么不呢?它采用空字符串并将其拆分为所有逗号字符,所以没有时间。这意味着空字符串保持不变。 但它并没有神奇地消失!

答案 1 :(得分:0)

explode返回Array ( [0] => ),因此您需要在array_map之前检查字符串

这是一个解决方案

   $exploderesult = $essential_skills ? explode(',', $essential_skills) : array();
   $essentialArray = array_map('trim', $exploderesult );

答案 2 :(得分:0)

这里最简单的解决方案就是filter结果数组,如下所示:

$essentialArray = array_filter(array_map('trim', explode(',', $essential_skills)));

但正确的方法是:

if ($essential_skills === '') {
$essentialArray = [];
}
else {
$essentialArray = array_map('trim', explode(',', $essential_skills));
}