我的数组中的一些元素是基于用户提交的空字符串。我需要移除这些元素。我有这个:
foreach($linksArray as $link)
{
if($link == '')
{
unset($link);
}
}
print_r($linksArray);
但这并不奏效。$linksArray仍然有空元素。我也尝试过用empty()函数这样做,但结果是一样的。
我的数组中的一些元素是基于用户提交的空字符串。我需要移除这些元素。我有这个:
foreach($linksArray as $link)
{
if($link == '')
{
unset($link);
}
}
print_r($linksArray);
但这并不奏效。$linksArray仍然有空元素。我也尝试过用empty()函数这样做,但结果是一样的。
当前回答
foreach($linksArray as $key => $link)
{
if($link === '')
{
unset($linksArray[$key]);
}
}
print_r($linksArray);
其他回答
foreach($linksArray as $key => $link)
{
if($link === '')
{
unset($linksArray[$key]);
}
}
print_r($linksArray);
只是想为循环提供一个替代方案…还解决了密钥的差距……
在我的例子中,我希望在操作完成时保留顺序数组键(而不仅仅是我所关注的奇数)。对我来说,将代码设置为只寻找奇数键似乎很脆弱,而且不适合将来使用。)
我一直在寻找类似这样的东西:http://gotofritz.net/blog/howto/removing-empty-array-elements-php/
array_filter和array_slice的组合可以达到目的。
$example = array_filter($example);
$example = array_slice($example,0);
不知道效率或基准,但它是有效的。
我必须这样做,以保持(string) 0的数组值
$url = array_filter($data, function ($value) {
return (!empty($value) || $value === 0 || $value==='0');
});
试试这个** * *的例子
$or = array(
'PersonalInformation.first_name' => $this->request->data['User']['first_name'],
'PersonalInformation.last_name' => $this->request->data['User']['last_name'],
'PersonalInformation.primary_phone' => $this->request->data['User']['primary_phone'],
'PersonalInformation.dob' => $this->request->data['User']['dob'],
'User.email' => $this->request->data['User']['email'],
);
$or = array_filter($or);
$condition = array(
'User.role' => array('U', 'P'),
'User.user_status' => array('active', 'lead', 'inactive'),
'OR' => $or
);
当你处理一个字符串数组时,你可以简单地使用array_filter(),它可以方便地为你处理所有这些:
print_r(array_filter($linksArray));
请记住,如果没有提供回调,数组中所有等于FALSE的条目(参见转换为布尔值)将被删除。因此,如果你需要保留精确字符串'0'的元素,你将需要一个自定义回调:
// PHP 7.4 and later
print_r(array_filter($linksArray, fn($value) => !is_null($value) && $value !== ''));
// PHP 5.3 and later
print_r(array_filter($linksArray, function($value) { return !is_null($value) && $value !== ''; }));
// PHP < 5.3
print_r(array_filter($linksArray, create_function('$value', 'return $value !== "";')));
注意:如果你需要在删除空元素后重新索引数组,使用:$linksArray = array_values(array_filter($linksArray));