Php 高级还是非高级

Php 高级还是非高级,php,Php,我有一个带有字段调用平衡的数据库。这是10000欧元。我还有一个字段,它的调用限制是7500欧元。我想要的是当我的存款余额大于我的存款限额时,回音:“请在开始前付款。” 我试过这个: <?php if ($row['balance'] > $row['limit']){ echo "Please, pay before start."; } ?> 它不起作用。也许是因为数字中的逗号?如何检查此项?您需要解析货币值之外的数字,以便能够正确比较它们: $balance = f

我有一个带有字段调用平衡的数据库。这是10000欧元。我还有一个字段,它的调用限制是7500欧元。我想要的是当我的存款余额大于我的存款限额时,回音:“请在开始前付款。”

我试过这个:

<?php
if ($row['balance'] > $row['limit']){
echo "Please, pay before start.";
}
?>


它不起作用。也许是因为数字中的逗号?如何检查此项?

您需要解析货币值之外的数字,以便能够正确比较它们:

$balance = floatval(preg_replace('/[^\d\.]/', '', $row['balance'] ));
$limit = floatval(preg_replace('/[^\d\.]/', '', $row['limit'] ));

if ($balance > $limit) {
    echo "Please, pay before start.";
}

您需要解析货币值之外的数字,以便能够正确比较它们:

$balance = floatval(preg_replace('/[^\d\.]/', '', $row['balance'] ));
$limit = floatval(preg_replace('/[^\d\.]/', '', $row['limit'] ));

if ($balance > $limit) {
    echo "Please, pay before start.";
}


这个想法不好,您应该在数据库中尝试十进制/数字类型。您可以使用或显示您喜欢的格式。然后您可以轻松地检查您的条件

这种想法不好,您应该尝试在数据库中输入十进制/数字类型。您可以使用或显示您喜欢的格式。然后,您可以轻松地检查您的条件

非正则表达式解决方案会更快—不确定性能是否会成为问题。此外,正则表达式不一定慢。+1,尽管这在错误的点修复了问题。货币应该以数字的形式存储,并且只有在视图中才可以使用逗号和货币符号。@DrupalStarter:上面的解决方案应该可以很好地工作,但是正如halfer上面所说的,您不应该将货币值存储为字符串,而应该将它们存储为数字。这样,你就可以避免处理所有这些讨厌的替换:)@AmalMurali谢谢。这只是一个小项目。你的解决方案很好用。再次感谢!非正则表达式解决方案会更快—不确定性能是否会成为问题。此外,正则表达式不一定慢。+1,尽管这在错误的点修复了问题。货币应该以数字的形式存储,并且只有在视图中才可以使用逗号和货币符号。@DrupalStarter:上面的解决方案应该可以很好地工作,但是正如halfer上面所说的,您不应该将货币值存储为字符串,而应该将它们存储为数字。这样,你就可以避免处理所有这些讨厌的替换:)@AmalMurali谢谢。这只是一个小项目。你的解决方案很好用。再次感谢!如果您将进程存储为带有千个分隔符和货币符号的字符串,那么这不是一个好的做法——因为您声明了这个原因。将价格存储为数字,并将美化作为渲染过程的一部分。哇!你用字符串来存储钱吗?千万不要把钱作为浮点数来存储,它们是不准确的。仅存储为整数。@Atle,谢谢-更正。@halfer:
float
因为货币不是比
string
更好的数据类型。如果将进程存储为带有千个分隔符和货币符号的字符串,这不是一种好的做法,原因是您声明的。将价格存储为数字,并将美化作为渲染过程的一部分。哇!你用字符串来存储钱吗?千万不要把钱作为浮点数来存储,它们是不准确的。只存储为整数。@Atle,谢谢-更正。@halfer:
float
因为钱不是比
string
更好的数据类型。我删除了我的答案。这是一个更好的解决方案。是的,不过请参阅@Atle关于使用整数的评论。@halfer谢谢。我理解这一点并编辑我的答案。理解这一点非常重要。我还读了mysql文档,删除了我的答案。这是一个更好的解决方案。是的,不过请参阅@Atle关于使用整数的评论。@halfer谢谢。我理解这一点并编辑我的答案。理解这一点非常重要。我还阅读了mysql文档和