为了账号安全,请及时绑定邮箱和手机立即绑定

删除空数组元素

删除空数组元素

PHP
阿晨1998 2019-06-15 17:33:50
删除空数组元素根据用户提交的内容,数组中的某些元素是空字符串。我需要去除这些元素。我有这个:foreach($linksArray as $link){     if($link == '')     {         unset($link);     }}print_r($linksArray);但不管用,$linksArray仍然有空元素。我也试过用empty()功能,但结果是相同的。
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

在处理字符串数组时,只需使用array_filter(),可以方便地为您处理所有这些:

print_r(array_filter($linksArray));

记住如果没有提供回调,数组的所有条目都等于FALSE(见转换为布尔值)将被移除。因此,如果您需要保留的元素是确切的字符串'0',您将需要一个自定义回调:

// PHP < 5.3print_r(array_filter($linksArray, create_function('$value', 'return $value !== "";')));
// PHP 5.3 and laterprint_r(array_filter($linksArray, function($value) { return $value !== ''; }));


查看完整回答
反对 回复 2019-06-15
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

你可以用array_filter若要删除空元素,请执行以下操作:

$emptyRemoved = array_filter($linksArray);

如果你有(int) 0在数组中,可以使用以下内容:

$emptyRemoved = remove_empty($linksArray);function remove_empty($array) {
  return array_filter($array, '_remove_empty_internal');}function _remove_empty_internal($value) {
  return !empty($value) || $value === 0;}

编辑:也许你的元素本身并不是空的,但包含一个或多个空格.在使用array_filter

$trimmedArray = array_map('trim', $linksArray);


查看完整回答
反对 回复 2019-06-15
?
慕少森

TA贡献2019条经验 获得超9个赞

关于这个话题最流行的答案是绝对不正确的。

考虑以下PHP脚本:

<?php
$arr = array('1', '', '2', '3', '0');// Incorrect:print_r(array_filter($arr));// Correct:print_r(array_filter($arr, 'strlen'));

这是为什么?因为包含单个‘0’字符的字符串也计算为布尔False,所以即使它不是空字符串,它仍然会被过滤。那会是个窃听器。

将内置的strlen函数作为筛选函数传递将有效,因为它返回非空字符串的非零整数和空字符串的零整数。非零整数在转换为布尔值时总是计算为真,而零整数在转换为布尔值时总是计算为false。

所以,绝对、明确、正确的答案是:

$arr = array_filter($arr, 'strlen');


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 307 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信