PHP不会将空值添加到新数组

时间:2018-06-17 15:39:20

标签: php

我正在运行XPath请求并尝试构建一个数组,但由于它是一个XPath请求,因此某些值只包含 或只包含一个空格。

我做了一些研究,但我找到的解决方案都没有帮助。

foreach ($dataArray as $value) {
    if (strpos($value, 'string A') !== false ||
        strpos($value, 'string B — ') !== false ||
        trim($value[1]) == ' ' ||
        strlen($value) < 2 ||
        ctype_space($value)) {
        continue;
    } else {
        $dataArray2[] = $value;
    }
}

echo '<pre>';
print_r($dataArray2);
echo '</pre>';

结果:

[0] => string C
[1] => string C
[2] => string C
[3] =>   // This is created even though it should not get into the array.
[4] => string C
[5] => string C
[6] => string C
[7] => string C
[8] => string C
[9] => string C
[10] => string C

编辑:

尝试了empty(trim($value[1])并且它无效,所以我决定检查$value[1]到底是什么,并使用var_dump($value[1]);。 结果: string(1) "�" 我不确定它是否应该这样,但对我发出警报。

3 个答案:

答案 0 :(得分:0)

尝试使用empty()函数

来捕获$ value [1]

答案 1 :(得分:0)

可能这个解决方案可以帮到你:

foreach ($dataArray as $value) {
    $trimmed = trim($value);
    if (!empty($trimmed)) {
        $dataArray2[] = $value;
    }
}

echo '<pre>';
print_r($dataArray2);
echo '</pre>';

答案 2 :(得分:0)

已修复,将if (strlen($value) > 2)添加到我的else语句中,因此最终代码现在如下所示:

foreach ($dataArray as $value) {
    if (strpos($value, 'string A') !== false ||
        strpos($value, 'string B — ') !== false ||
        trim($value[1]) == ' ' ||
        strlen($value) < 2 ||
        ctype_space($value)) {
        continue;
    } elseif (strlen($value) > 2) {
        $dataArray2[] = $value;
    }
}

echo '<pre>';
var_dump($dataArray2);
echo '</pre>';

正如@JRsz的评论所示。

另外,我已将print_r更改为var_dump,只是为了检查空白值有多少空格。这是一个很好的举动,因为事实证明字符串长度是2,这就是我提出> 2的方式。

不确定这是否是最好的方法,但它有效。