如何根据函数php的值自动生成number_format?

我有以下创建函数的理论,该函数可让您根据货币自动将格式添加到数字中。


$price = 19999;

$curr = 'EUR';

function DinersFormat($price, $curr){

    $currencies['EUR'] = array(2, ',', '.');        // Euro

    $currencies['ESP'] = array(2, ',', '.');        // Euro

    $currencies['USD'] = array(2, '.', ',');        // US Dollar

    $currencies['COP'] = array(2, ',', '.');        // Colombian Peso

    $currencies['CLP'] = array(0,  '', '.');        //  Chilean Peso

}

除了可以很好地替代money_format()功能或NumberFormatter功能之外,它看起来也很优雅


因此,我的想法是能够将格式类型发送给函数number_format(),例如:在线执行演示


$price = 1000;

$curr = "0, ',', ' '";


$money = number_format($price, $curr);

//$money = number_format($number, 0, ',', ' ')


echo $money;

但是结果不正确,1,000并出现错误信息:


PHP注意:在第6行/home/NC7DpL/prog.php中遇到的格式不正确的数值-> $money = number_format($price, $curr);


预期的正确输出是 1 000


然后如何number_format()从函数内部的数组中生成,这样我就可以以这种方式DinersFormat($price, $curr);或以这种方式使用它DinersFormat($price, $curr='EUR');


慕慕森
浏览 172回答 1
1回答

梦里花落0921

一种简单的解决方法是使用参数拆包运算符(...)并像DinersFormat函数中那样传递您拥有的数组...$price = 1000;$curr = array(2, ',', '.');$money = number_format($price, ...$curr);echo $money;给1.000,00要将其包含在函数中,您可以执行以下操作...function DinersFormat($price, $curr){    // Array of formats against the currency    $currencies = ['EUR' => array(2, ',', '.'),        // Euro                'ESP' => array(2, ',', '.'),        // Euro                'USD' => array(2, '.', ','),        // US Dollar                'COP' => array(2, ',', '.'),        // Colombian Peso                'CLP' => array(0,  '', '.')];        //  Chilean Peso    return number_format($price, ...$currencies[$curr]);}$price = 1000;$curr = 'EUR';$money = DinersFormat($price,$curr);echo $money;
打开App,查看更多内容
随时随地看视频慕课网APP