由于NULL和0在php中都返回为空,因此我正在努力根据mysqli记录集的双精度类型结果来确定差异。
我尝试转换每种情况以返回更易于管理的返回字符串:
if($val == 0){
echo "No Cost Option";
} elseif (empty($val)){
echo "UNCOSTED";
} else {
echo "£ ".number_format($val ,2);
}
理论上,如果数据库中存在零,它将返回“无成本选择”。
同样,如果数据库返回NULL,它应该返回“ UNCOSTED”。
最后,如果有一个值,它将简单地格式化该值。
当前(并且错误地),NULL和0的处理方式相同,因此都将其处理为“无成本选项”。
答案 0 :(得分:1)
您可以严格地与null
进行比较。如果严格比较整数,则可能不起作用,因为结果将是数字字符串。
颠倒您的if语句顺序,然后首先检查null。
if (null === $val) {
echo "UNCOSTED";
} elseif ($val == 0) {
echo "No Cost Option";
} else {
echo "£ ".number_format($val, 2);
}
答案 1 :(得分:0)
如果严格要与数字0进行比较,则应使用 ===
fun getArrayList(): MutableLiveData<ArrayList<ItemListviewModel>> {
//Make Instance of fireStore
val db: FirebaseFirestore = FirebaseFirestore.getInstance()
//Get data From collection in fireStore
db.collection("ItemDataList")
.limit(5)
.get()
.addOnCompleteListener { task ->
if (task.isSuccessful) {
for (document in task.result!!) {
Log.d("tag", "${document.id} => ${document.data} ")
val id: String = document.id
val amount: Int = document.get("amount").toString().toInt()
if(GlobalVariables.ageSelect != "all")
{
if (document.get("justArived").toString() == "TRUE"
&& amount<=GlobalVariables.amountSelected
&& document.get("age").toString() == GlobalVariables.ageSelect
&& GlobalVariables.brandsSelected.contains(document.get("BrandName").toString())
) {
val item = ItemListDataModel(
document.get("id").toString(),
document.get("imageUrl").toString(),
document.get("Name").toString(),
document.get("BrandName").toString(),
document.get("amount").toString()
)
val lastVisible = task.result!!.documents[task.result!!.size() - 1]
val itemListviewModel1 = ItemListviewModel(item)
arrayList.add(itemListviewModel1)
}
}
else{
if (document.get("justArived").toString() == "TRUE"
&& amount<=GlobalVariables.amountSelected
) {
val item = ItemListDataModel(
document.get("id").toString(),
document.get("imageUrl").toString(),
document.get("Name").toString(),
document.get("BrandName").toString(),
document.get("amount").toString()
)
val itemListviewModel1 = ItemListviewModel(item)
arrayList.add(itemListviewModel1)
}
}
}
arraylistmutableliveData.value = arrayList
}
}.addOnFailureListener {
Log.d("tag", "Error getting documents.")
}
return arraylistmutableliveData
}
您使用===进行严格的相同比较(类型和值)。
如果您想提高精度,
0,null,false,“ 0”,[](一个空数组)和更多(请参见type comparaison)的值相等。 所以
if($val === 0){
echo "No Cost Option";
} elseif (empty($val)){
echo "UNCOSTED";
} else {
echo "£ ".number_format($val ,2);
}
但是如果您将它们与 ===
进行比较,它们就不是