【问题标题】:Why are Comma's being printed when using explode?为什么使用爆炸时会打印逗号?
【发布时间】:2016-01-06 15:33:28
【问题描述】:

我有一串名字,我想打印出来。我正在使用explode 函数。它可以工作,但是,我的逗号正在打印名称,我不希望这样。我怎样才能让它们不打印?任何帮助表示赞赏。还有如何让我的代码更有效率?

$input = 'Jrew Low, Bill Wilt, Law Naw, Ing Holp';

list($fName, $lName, $fNameTwo, $lNameTwo, $fNameThree, $lNameThree, $fNameFour, $lNameFour) = explode(' ', $formInputNames);
if ($formInputNames == empty($fName) && empty($lName) || empty($fNameTwo) && empty($lNameTwo)){
    echo "No Valid Name";
} else {
// while ($fName == empty($formInputNames)){
//  echo "something is missing";
// }
echo "First Name: $fName <br> Last Name: $lName <br>";
echo "Email Address: $fName$email <br><br>";
echo "First Name: $fNameTwo <br> Last Name: $lNameTwo <br>";
echo "Email Address: $fNameTwo$email <br><br>";
echo "First Name: $fNameThree <br> Last Name: $lNameThree <br>";
echo "Email Address: $fNameThree$email <br><br>";
echo "First Name: $fNameFour <br> Last Name: $lNameFour <br>";
echo "Email Address: $fNameFour$email <br><br>";
}

输出:

名字:Jrew

姓:低,

名字:比尔

姓:威尔特,

名字:Law

姓:Naw,

名字:英格

姓:霍普

【问题讨论】:

标签: php explode


【解决方案1】:

因为您在分解功能中的分隔符是“”(空格)。为什么你认为从空格中拆分字符串时逗号会消失?

先使用拆分

explode(", ", $input);

这将为您提供全名列表。稍后您可以将其拆分一次以分别获取名字和姓氏:

explode(" ", $fullname);

但在我个人看来,不是将所有这些名字和姓氏绑定到不同的变量。将它们放入一个数组并通过遍历数组来打印名称。

$input = 'Jrew Low, Bill Wilt, Law Naw, Ing Holp';
$fullnames = explode(", ", $input);

foreach ($fullnames as $fullname) {
    $nameSplit = explode(" ", $fullname);
    echo 'First Name: ' . $nameSplit[0];
    echo 'Last Name: ' . $nameSplit[1];
}

【讨论】:

  • 虽然这是一个很好的解释,但请添加您对如何修复它的建议
  • 这里还没有绿色勾号。 OP 也没有发表评论,而且这个问题也不清楚,给出下面的评论 " 不起作用,逗号消失了,但现在输出的格式都搞砸了。它被读作 FN: Jrew Low LN: Bill Wilt. – Ale" - 他们绝对没有向我们展示这里的全貌。不过很好的答案。编辑:终于
  • 完美答案!谢谢
【解决方案2】:

为什么要打印逗号?因为explode 正在拆分 空格 上的字符串 - 你没有告诉它用逗号做任何事情。

【讨论】:

  • 虽然这是一个很好的解释,但请添加您对如何修复它的建议
【解决方案3】:

explode(' ', $formInputNames) 更改为explode(', ', $formInputNames)

您只拆分空格,但您还想拆分逗号以删除它们。

【讨论】:

  • 别忘了他分别呼应了名字和姓氏,使用它并不能得到所需的结果
  • 没用,逗号消失了,但现在输出的格式都搞砸了。它被解读为 FN:Jrew Low LN:Bill Wilt。
  • @Ale 给出了您发布的代码,这确实会输出名称减去尾随逗号。我不知道您所说的 是什么意思“不起作用,它去掉了逗号,但现在输出的格式都搞砸了。它被读作 FN:Jrew Low LN:Bill Wilt。” .
【解决方案4】:

现在我明白了这个问题..这是最简单的方法..

$input = 'Jrew Low, Bill Wilt, Law Naw, Ing Holp';
$chunks = explode(" ", $input);
foreach($chunks as $index=>$name)
    echo ($index % 2 ? "Last" : "First") . " name: ".trim($name, ", ")."\n";

Here's a fiddle

【讨论】:

  • 行数少并不是“最简单”的方式,这段代码很难阅读,尤其是对于初学者。
  • “最简单”是主观的..唯一令人困惑的是模运算符..也许是三元
猜你喜欢
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 2019-08-31
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多