我有下面的一行,它接受一个字符串,用','将它分解为一个数组,然后为每个数组项修剪任何空格。
$essentialArray = array_map('trim', explode(',', $essential_skills));
但是当$essential_skills string = ""
$essentialArray
等于Array ( [0] => )
但我需要它等于Array()
,以便我可以在其上调用empty()
。
答案 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));
}