首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运算符"===“在对象中使用时不正确计算,因为它应该是php

运算符"===“在对象中使用时不正确计算,因为它应该是php
EN

Stack Overflow用户
提问于 2021-03-01 20:16:59
回答 1查看 26关注 0票数 0

我正在尝试遍历分配给对象的数组。函数entity_products_check()必须将提交的产品与数据库中预先保存的值数组进行比较。在所提供的测试示例中,foreach循环必须计算为true。但是,由于无法理解===运算符返回(即null),XAMPP将其计算为false。由于一些奇怪的原因,只有在检查第一个值时才会发生这种情况。对于任何其他结果,它都会正确执行。我不明白为何会这样?

代码语言:javascript
复制
 $entity=array("products"=>array("machine", "lollipop"));
 class Borrowing_Cost
 {
    public array $entity;
    public array $item;
    public array $borrowing;
    public function __construct($entity, $item, $borrowing)
    {

        $this->entity = $entity;
        $this->item = $item;
        $this->borrowing = $borrowing;
    }

    public function entity_products_check($arg){
        $is_item = "";                

        **foreach ($this->entity["products"] as $value){           
            if($value === $arg){
                $is_item = "true";
            } else {
                $is_item = "false";
            }
        }**

        return $is_item;
    }
 }
 $borr = new Borrowing_Cost($entity, $item, $borrowing);
 echo $borr->entity_products_check("machine") . "<br>";
EN

回答 1

Stack Overflow用户

发布于 2021-03-01 20:32:29

在您的代码中,您将每个项与您要寻找的值进行比较,因此在找到它之后,它仍然会转到下一个项上,并将标志设置为false

此代码在开始时设置为false,只有在找到时将其标记为true,然后停止.公共函数entity_products_check($arg){ $is_item = "false";

代码语言:javascript
复制
    foreach ($this->entity["products"] as $value){
        if($value === $arg){
            $is_item = "true";
            break;
        }
    }

    return $is_item;
}

或者您可以使用in_array()检查值是否在数组中.

代码语言:javascript
复制
public function entity_products_check($arg){
    return in_array($arg, $this->entity["products"])
        ? "true" : "false";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66429056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档