如何在 php 中格式化多维数组中的数字?
How to format numbers on multidimensional arrays in php?
抱歉,我的问题可能是一个简单的问题,但我不知道 PHP,而且在网上冲浪了几个小时后,我还是无法解决这个问题:/
我正在做一个带有价格列表的网站,我把它放在一个数组中:
$priceList = [
"teaTowel" => [
"calm500" => 2.75, "active500" => 3.25,
"calm300" => 3.15, "active300" => 3.65,
"calm150" => 3.50, "active150" => 4.00,
"calm50" => 3.90, "active50" => 4.40
],
"apronChild" => [
"calm500" => 3.30, "active500" => 3.45,
"calm300" => 3.70, "active300" => 3.85,
"calm150" => 4.20, "active150" => 4.35,
"calm50" => 4.90, "active50" => 5.05
]
];
我设法展示了它们(耶!),就像这样:
<p>Price: <?php echo $priceList['apronChild']['calm500'] ?> €</p>
问题是,我想格式化价格,使它们以逗号而不是点和两位小数显示。像“3,30”而不是“3.3”
但我无法使函数 format_number 在我的数组上运行 :/
我尝试了无穷无尽的变化:
$priceListFormat = array_map(function($num){return number_format($num, 2, ',', ' ');}, $priceList);
<p>Price: <?php echo $priceListFormat['apronChild']['calm500'] ?> €</p>
但是没办法,我对php一无所知,我有点摸不着头脑^^
感谢您的帮助!
您不能使用 array_map()
执行此操作,因为它 return 不是关联数组。你必须使用嵌套循环。
$priceListFormat = [];
foreach ($priceList as $k1 => $v1) {
$r1 = [];
foreach ($v1 as $k2 => $v2) {
$r1[$k2] = number_format($v2, 2, ',', ' ');
}
$priceListFormat[$k1] = $r1;
}
如果您的数组只包含价格,那么您可以使用 array_walk_recursive()
,它只处理数组的所有叶节点。然后只需格式化每个值并用它替换现有值...
array_walk_recursive($priceList, function(&$price)
{$price = number_format($price, 2, ',', ' ');});
抱歉,我的问题可能是一个简单的问题,但我不知道 PHP,而且在网上冲浪了几个小时后,我还是无法解决这个问题:/
我正在做一个带有价格列表的网站,我把它放在一个数组中:
$priceList = [
"teaTowel" => [
"calm500" => 2.75, "active500" => 3.25,
"calm300" => 3.15, "active300" => 3.65,
"calm150" => 3.50, "active150" => 4.00,
"calm50" => 3.90, "active50" => 4.40
],
"apronChild" => [
"calm500" => 3.30, "active500" => 3.45,
"calm300" => 3.70, "active300" => 3.85,
"calm150" => 4.20, "active150" => 4.35,
"calm50" => 4.90, "active50" => 5.05
]
];
我设法展示了它们(耶!),就像这样:
<p>Price: <?php echo $priceList['apronChild']['calm500'] ?> €</p>
问题是,我想格式化价格,使它们以逗号而不是点和两位小数显示。像“3,30”而不是“3.3”
但我无法使函数 format_number 在我的数组上运行 :/
我尝试了无穷无尽的变化:
$priceListFormat = array_map(function($num){return number_format($num, 2, ',', ' ');}, $priceList);
<p>Price: <?php echo $priceListFormat['apronChild']['calm500'] ?> €</p>
但是没办法,我对php一无所知,我有点摸不着头脑^^ 感谢您的帮助!
您不能使用 array_map()
执行此操作,因为它 return 不是关联数组。你必须使用嵌套循环。
$priceListFormat = [];
foreach ($priceList as $k1 => $v1) {
$r1 = [];
foreach ($v1 as $k2 => $v2) {
$r1[$k2] = number_format($v2, 2, ',', ' ');
}
$priceListFormat[$k1] = $r1;
}
如果您的数组只包含价格,那么您可以使用 array_walk_recursive()
,它只处理数组的所有叶节点。然后只需格式化每个值并用它替换现有值...
array_walk_recursive($priceList, function(&$price)
{$price = number_format($price, 2, ',', ' ');});