从php中的数组中删除某些值[重复]

Posted

技术标签:

【中文标题】从php中的数组中删除某些值[重复]【英文标题】:Remove certain values from array in php [duplicate] 【发布时间】:2012-11-13 15:38:47 【问题描述】:

可能重复:Remove empty array elements

我有一个这样的数组

Array ( [81] => 5.00 [78] => 4.67 [13] => 4.67 [65] => 4.60 [91] => 4.50 [4] => 4.40 [7] => 4.25 [11] => 4.20 [47] => 4.20 [21] => 4.20 [66] => 4.17 [48] => 4.00 [37] => 4.00 [69] => 4.00 [49] => 4.00 [38] => 4.00 [54] => 4.00 [62] => 4.00 [63] => 4.00 [64] => 4.00 [61] => 4.00 [60] => 4.00 [52] => 4.00 [59] => 4.00 [80] => 4.00 [50] => 4.00 [34] => 4.00 [16] => 4.00 [18] => 4.00 [9] => 4.00 [5] => 4.00 [3] => 4.00 [19] => 4.00 [20] => 4.00 [25] => 4.00 [42] => 3.83 [73] => 3.83 [28] => 3.83 [58] => 3.83 [15] => 3.83 [45] => 3.80 [10] => 3.80 [67] => 3.75 [17] => 3.75 [2] => 3.75 [27] => 3.75 [32] => 3.75 [51] => 3.75 [1] => 3.75 [31] => 3.71 [53] => 3.70 [72] => 3.70 [26] => 3.67 [82] => 3.67 [12] => 3.67 [71] => 3.67 [77] =>  [70] =>  [41] => 3.67 [8] => 3.60 [22] => 3.60 [57] => 3.60 [39] => 3.60 [83] => 3.60 [76] => 3.50 [74] => 3.50 [79] => 3.50 [43] => 3.50 [35] => 3.50 [14] => 3.50 [6] => 3.50 [44] => 3.50 [33] => 3.50 [89] => 3.33 [68] => 3.30 [29] => 3.25 [40] => 3.20 [24] => 3.17 [30] => 3.13 [56] => 3.00 [36] => 3.00 [23] => 3.00 [55] => 3.00 [46] => 2.67 [90] =>  ) 

现在我想要的是从这个数组中删除空白值索引。提前致谢。

【问题讨论】:

究竟什么是“空白”?改为提供var_dump($arr); ***.com/questions/7225070/… 这可能有效 - $arr = array_filter($arr); @NiravRanpara - 我认为所选答案已损坏 @Nirav Ranpara:你会推荐什么用作needle 【参考方案1】:

您可以使用array_filter

function not_empty($a)

    return !empty($a) && !is_null($a);


$array = array_filter($array, 'not_empty');

【讨论】:

大错特错。 isset($a) 将始终返回 true(如果 $a 是空字符串)。 @cryptic: empty() 不适用于 ' '(可能被 OP 视为“空白”) @zerkms 好吧,它会为null 值返回true :) @Jack: 对于null - 是的。对于' ' - 没有。从我的角度来看,空格字符是“空白”的完美候选者;-)(对于新手 OP) @zerkms 是的,在这一点上,我们都在猜测空可能意味着什么=p【参考方案2】:
function is_not_blank($value) 
    return $value !== false && !is_null($value) && trim($value) !== "";


$myArray = array_filter($myArray, "is_not_blank");

【讨论】:

nulls 和 ' ' 怎么样? @zerkms:你说得对,我没有包括那些 - 我现在修改了我的答案。【参考方案3】:
foreach($array as $key => $val)

    if(empty($val)) unset($array[$key]);

print_r($array);

这将取消设置数组中没有键的任何部分

【讨论】:

愚蠢的错误,很好的捕捉! 再试一次,$key 不是键而是值 @Vulcan: CDD - cmets 驱动开发 现在怎么样? (这很尴尬!) @PRPGFerret:请仔细查看您的答案修改【参考方案4】:

您可以遍历它,取消设置任何空值。

foreach ($array as $key => $value) 
    if (empty($value)) 
        unset($array[$key]);
    

【讨论】:

以上是关于从php中的数组中删除某些值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHP 中的多维数组中删除重复值

如何从 PHP 中的多维数组中删除重复值 [重复]

从php中的多维数组中删除重复值

如何从 PHP 中的数组中删除值?

如果两个值匹配,则从 php 中的多维关联数组中删除重复项

删除php数组中的重复值