PHP array_filter()不起作用

时间:2014-02-09 16:59:25

标签: php arrays

这里的目标是从日志文件中获取文本,由返回分隔的纯文本,每行由不同数量的空格分隔。

将它变成多维是很容易的,摆脱空白不是。我想有很多混乱的方法可以解决这个问题,但这不是array_filter()的原因之一吗?

$alarms = array(
    "1530     1545     Place_4     Fault_1",
    "1617     1622     Place_1     Fault_2",
    "1634     1640     Place_2     Fault_1"
);

foreach ($alarms as $data) {
    $subArr = explode(" ", $data);  

    array_filter($subArr);

    print_r($subArr);
    echo "<br /><br />";
}

输出:

Array ( [0] => 1530 [1] => [2] => [3] => [4] => [5] => 1545 [6] => [7] => [8] => [9] => [10] => Place_4 [11] => [12] => [13] => [14] => [15] => Fault_1 ) 

Array ( [0] => 1617 [1] => [2] => [3] => [4] => [5] => 1622 [6] => [7] => [8] => [9] => [10] => Place_1 [11] => [12] => [13] => [14] => [15] => Fault_2 ) 

Array ( [0] => 1634 [1] => [2] => [3] => [4] => [5] => 1640 [6] => [7] => [8] => [9] => [10] => Place_2 [11] => [12] => [13] => [14] => [15] => Fault_1 ) 

希望它成为:

数组([0] =&gt; 1530 [1] =&gt; 1545 [2] =&gt; Place_4 [3] =&gt; Fault_1)

数组([0] =&gt; 1617 [1] =&gt; 1622 [2] =&gt; Place_1 [3] =&gt; Fault_2)

数组([0] =&gt; 1634 [1] =&gt; 1640 [2] =&gt; Place_2 [3] =&gt; Fault_1)

不确定是什么问题......

干杯。

4 个答案:

答案 0 :(得分:9)

从手册array_filter

  

返回值:   返回已过滤的数组。

强调返回。目前您忽略了返回值。

答案 1 :(得分:0)

而不是explode(" ",$something),试试这个:

$parts = preg_split("/ +/",$something);

这将分成可变数量的空格。

答案 2 :(得分:0)

更新代码

$alarms = array(
    "1530     1545     Place_4     Fault_1",
    "1617     1622     Place_1     Fault_2",
    "1634     1640     Place_2     Fault_1"
);

foreach ($alarms as $data) {
    $subArr = explode(" ", $data);  

    $subArr = array_filter($subArr);

    print_r($subArr);
    echo "<br /><br />";
}

答案 3 :(得分:0)

    $array = array(
      0 => '0130085779',
      1 => '0130085779',
      2 => '0130181129',
      3 => '0130181296',
      4 => '0130181448',
      5 => '0130214980'
    );
$array = array_filter($array); 

我使用了此功能,但是不起作用。