我正在尝试拆分一行PHP,原因是我实际上并不总是需要一些代码,所以我可以重用它的一部分。
我这样做的主要原因是因为我获得的货币显示某些货币的更多数字,例如1.2562而不是1.25,所以我想只在某些GET上使用substr函数,并且能够为其他GET修改它。
始终需要符号,substr不是,$ converter总是需要,substr的结尾部分不是,它可以改变,需要新的货币。
$symbol[2] . substr(($converter->convert($defaultCurrency, $newCurrency) * 1), 0, 4) . " <b>" .$newCurrency. "</b>";
我尝试过爆炸,但是我并不完全确定如何做到这一点,因为我从来没有真正分开任何东西,所以我对如何解决它感到有点困惑。
一旦代码经过GET检查,这是当前的一组,我希望它抓取指定的拆分代码片然后输出。
答案 0 :(得分:0)
将代码放在这样的函数中:
function formatCurrency($symbol, $converter, $defaultCurrency, $newCurrency, $factor=1.0, $suffix="", $substrChars=0) {
if($substrChars>0) {
return $symbol . substr(($converter->convert($defaultCurrency, $newCurrency) * $factor), 0, $substrChars) . $suffix . " <b>" . $newCurrency. "</b>";
} else {
return $symbol . ($converter->convert($defaultCurrency, $newCurrency) * $factor) . $suffix . " <b>" . $newCurrency. "</b>";
}
}
如果您在没有$substrChars
参数的情况下调用它,它将省略substr()
调用,否则它将删除除$substrChars
个字符以外的所有字符:
if( $_GET['currency'] === "GBP" ){
$newCurrency = $_GET['currency'];
$string = formatCurrency($symbol[1], $converter, $defaultCurrency, $newCurrency, 2.0, ".00", 0);
} elseif( $_GET['currency'] === "USD" ){
$newCurrency = $_GET['currency'];
$string = formatCurrency($symbol[2], $converter, $defaultCurrency, $newCurrency, 1.0, "", 4);
}
此解决方案非常易读,因为您可以立即看到条件语句中两个分支之间的区别。