2015-01-15 148 views
0

我研究了很多关于该主题的stackoverflow上发布的问题和答案,但我仍然无法找到解决以下问题的解决方案。从多维数组中删除空值

我需要从这个链接提供的文本生成一个数组,减去一些特定的行:https://code.wireshark.org/review/gitweb?p=wireshark.git;a=blob_plain;f=manuf。这部分我能够做到。

PHP代码:

$arr = file('https://code.wireshark.org/review/gitweb?p=wireshark.git;a=blob_plain;f=manuf'); 
$arr = preg_replace('/^(?![a-z0-9]{2}:[a-z0-9]{2}:[a-z0-9]{2}\s).*$/i', '', $arr); 
$arr = preg_replace ('/#/i', '',$arr); 
$arr = preg_replace('/\t+/', ' ', $arr); 
$arr = preg_replace('/\s{2,}/', ' ', $arr); 
$arr = preg_replace('/ /', '~', $arr, 2); 

foreach ($arr as $field) 
{ 
    $macList[] = explode('~', $field); 
} 

echo "<pre>"; 
print_r($macList); 
echo "</pre>"; 

的问题是,当我使用print_r,第52子阵列是空的,再加上一些几十个在底部。我无法弄清楚如何删除它们。

减少print_r输出,因为完整的输出返回25770次阵列:

Array 
(

[0] => Array 
    (
     [0] => 

    ) 

[1] => Array 
    (
     [0] => 

    ) 

[2] => Array 
    (
     [0] => 

    ) 

[3] => Array 
    (
     [0] => 

    ) 

[4] => Array 
    (
     [0] => 

    ) 

[5] => Array 
    (
     [0] => 

    ) 

[6] => Array 
    (
     [0] => 

    ) 

[7] => Array 
    (
     [0] => 

    ) 

[8] => Array 
    (
     [0] => 

    ) 

[9] => Array 
    (
     [0] => 

    ) 

[10] => Array 
    (
     [0] => 

    ) 

[11] => Array 
    (
     [0] => 

    ) 

[12] => Array 
    (
     [0] => 

    ) 

[13] => Array 
    (
     [0] => 

    ) 

[14] => Array 
    (
     [0] => 

    ) 

[15] => Array 
    (
     [0] => 

    ) 

[16] => Array 
    (
     [0] => 

    ) 

[17] => Array 
    (
     [0] => 

    ) 

[18] => Array 
    (
     [0] => 

    ) 

[19] => Array 
    (
     [0] => 

    ) 

[20] => Array 
    (
     [0] => 

    ) 

[21] => Array 
    (
     [0] => 

    ) 

[22] => Array 
    (
     [0] => 

    ) 

[23] => Array 
    (
     [0] => 

    ) 

[24] => Array 
    (
     [0] => 

    ) 

[25] => Array 
    (
     [0] => 

    ) 

[26] => Array 
    (
     [0] => 

    ) 

[27] => Array 
    (
     [0] => 

    ) 

[28] => Array 
    (
     [0] => 

    ) 

[29] => Array 
    (
     [0] => 

    ) 

[30] => Array 
    (
     [0] => 

    ) 

[31] => Array 
    (
     [0] => 

    ) 

[32] => Array 
    (
     [0] => 

    ) 

[33] => Array 
    (
     [0] => 

    ) 

[34] => Array 
    (
     [0] => 

    ) 

[35] => Array 
    (
     [0] => 

    ) 

[36] => Array 
    (
     [0] => 

    ) 

[37] => Array 
    (
     [0] => 

    ) 

[38] => Array 
    (
     [0] => 

    ) 

[39] => Array 
    (
     [0] => 

    ) 

[40] => Array 
    (
     [0] => 

    ) 

[41] => Array 
    (
     [0] => 

    ) 

[42] => Array 
    (
     [0] => 

    ) 

[43] => Array 
    (
     [0] => 

    ) 

[44] => Array 
    (
     [0] => 

    ) 

[45] => Array 
    (
     [0] => 

    ) 

[46] => Array 
    (
     [0] => 

    ) 

[47] => Array 
    (
     [0] => 

    ) 

[48] => Array 
    (
     [0] => 

    ) 

[49] => Array 
    (
     [0] => 

    ) 

[50] => Array 
    (
     [0] => 

    ) 

[51] => Array 
    (
     [0] => 

    ) 

[52] => Array 
    (
     [0] => 00:00:00 
     [1] => 00:00:00 
     [2] => Officially Xerox, but 0:0:0:0:0:0 is more common 

    ) 
) 

问题:如何删除这些52(0〜51)空数组?没有什么我尝试过。

+0

循环通过它们和使用unset()就像那样简单 – geekman 2015-01-15 15:41:03

回答

1

而不是尝试删除空键,而不是在第一个地方添加空数组: 编辑看起来'空'数组实际上不是空的,而是包含一个空格字符的单个元素。以除去可以用trimarray_maparray_filter结合empty

foreach ($arr as $field) 
    { 
     $temp = explode('~', $field); 
     if(!empty(array_filter(array_map('trim', $temp)))) 
     { 
      $macList[] = $temp; 
     } 
    } 

    echo "<pre>"; 
    print_r($macList); 
    echo "</pre>"; 
+0

非常感谢您花时间回答。不幸的是,在应用您的建议之后,我得到的结果表明仍在显示空的子数组。也许我错误地应用了你的代码? [http://hastebin.com/geyusosiyo](http://hastebin.com/geyusosiyo) – thiago 2015-01-15 16:10:32

+0

@thiago好的,请参阅编辑,我最初误读 – Steve 2015-01-15 16:16:13

+0

再次感谢。我很抱歉花时间。下面的代码在你的新建议之后,仍然返回那些空的数组:[http://hastebin.com/umijaqufel](http://hastebin.com/umijaqufel)。 – thiago 2015-01-15 16:32:40

1

作为使用array_filter()假设它始终是一个空的单个元件阵列的一个示例:

$new_array = array_filter($array, function($elements) { 
    return !empty($elements[0]); 
}); 
+0

McCreary先生,我真诚地感谢您的回答。我遵循你的建议,但不幸的是,空数组仍在显示。链接到我用来测试的代码:[http://hastebin.com/tucipapaco](http://hastebin.com/tucipapaco)。也许我错误地实施了你的建议? – thiago 2015-01-15 16:41:16