确定NULL,零(双精度)和值(双精度)之间的差异

时间:2019-08-05 12:06:08

标签: php mysqli

由于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的处理方式相同,因此都将其处理为“无成本选项”。

2 个答案:

答案 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);
}

但是如果您将它们与 ===

进行比较,它们就不是