【问题标题】:Php - Can I ignore/skip empty strings when using join()Php - 使用 join() 时我可以忽略/跳过空字符串吗
【发布时间】:2018-06-23 20:16:57
【问题描述】:

我有一个 PHP 脚本,它会根据几个子字符串生成一个连接字符串。

作为一个例子,我在下面提供了一些示例代码,它采用一个包含名字、中间名和姓氏的数组,并在 join 函数中在它们之间添加换行符。

第二个数组包含一个空字符串(中间名),我想在连接过程中忽略它。

我想找到一个可以忽略 join() 函数中的空字符串的解决方案。

可以通过一些巧妙的“技巧”来完成,还是我必须先从空字符串中过滤数组?

// The array is designed as [firstname, middlename, lastname]
$names1 = array("John", "William", "Smith");
$names2 = array("Adam", "", "Johnson");

echo join("<br>", $names1);
echo "<br>";
echo join("<br>", $names2);

// Result:
/*
John
William
Smith

Adam
             <-- Can this empty line be ignored by some "trick"? :)
Johnson

注意。我在实际情况下的数组包含应由“ AND ”关键字分隔的条件。我想避免结果为“condition1 AND AND condition3”

【问题讨论】:

  • 在 PHP 中使用 implode() 而不是 join() 更为惯用。

标签: php arrays join


【解决方案1】:

只需filter out空数组项:

echo join('<br>', array_filter($names2, 'strlen'));

【讨论】:

  • 请注意,"0" 也会以这种方式过滤。也许array_filter(..., 'strlen') 代替。
  • 哈哈...这很简单!谢谢! :-D
【解决方案2】:

扩展 Mike 的答案并直接取自 php.net

// removes all NULL, FALSE and Empty Strings but leaves 0 (zero) values
$result = array_filter( $array, 'strlen' );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多