Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象属性数组上的php foreach迭代不增加值_Php_Arrays_Foreach_Object Property - Fatal编程技术网

对象属性数组上的php foreach迭代不增加值

对象属性数组上的php foreach迭代不增加值,php,arrays,foreach,object-property,Php,Arrays,Foreach,Object Property,请帮忙!我盯着这个看了太久了。我有一个对象的属性,它是一个对象数组。我想将一个对象传递给父对象的方法,并在该数组属性中搜索匹配项,如果找到匹配项,则返回索引。否则,我需要它返回-1。出于某种原因,它不是迭代。如果我回显$order->product属性(循环期间索引指向的位置),它是不变的。我已经转储了数组,我知道它包含不同的值。我可以向您展示一个大的var转储,但我想我首先会问,是否有一个简单的错误或其他对您来说很明显的错误,我错过了 public function getItemIndex(

请帮忙!我盯着这个看了太久了。我有一个对象的属性,它是一个对象数组。我想将一个对象传递给父对象的方法,并在该数组属性中搜索匹配项,如果找到匹配项,则返回索引。否则,我需要它返回-1。出于某种原因,它不是迭代。如果我回显$order->product属性(循环期间索引指向的位置),它是不变的。我已经转储了数组,我知道它包含不同的值。我可以向您展示一个大的var转储,但我想我首先会问,是否有一个简单的错误或其他对您来说很明显的错误,我错过了

public function getItemIndex($prod) {
    if (isset($this->orders)){
      foreach($this->orders as $key => $order) {
        if ($order->product == $prod) { //if I echo this $order->product to the screen, it is unchanging
          return $key;
        } else { return -1; }
      }
    }
    else {
      return -1;
    } 
  }

如果有人有任何想法,我愿意讨论,并根据需要发布更多信息。谢谢您的时间。

您总是
在第一次迭代时返回一个值,可以是
$key
-1
。尝试删除当前的
else
语句。这将允许您对整个数组进行完全迭代

public function getItemIndex($prod) {
    if (isset($this->orders)){
        foreach($this->orders as $key => $order) {
            if ($order->product == $prod) { //if I echo this $order->product to the screen, it is unchanging
                return $key;
            }
        }
    }

    return -1;
}

这将只在遍历所有内容并且没有找到任何匹配项后返回-1。如果找到匹配项,它仍将
返回$key

您总是
在第一次迭代时返回一个值,
$key
-1
。尝试删除当前的
else
语句。这将允许您对整个数组进行完全迭代

public function getItemIndex($prod) {
    if (isset($this->orders)){
        foreach($this->orders as $key => $order) {
            if ($order->product == $prod) { //if I echo this $order->product to the screen, it is unchanging
                return $key;
            }
        }
    }

    return -1;
}

这将只在遍历所有内容并且没有找到任何匹配项后返回-1。如果找到匹配项,它仍将
返回$key

能否显示
$this->orders
(或其一部分)?in_数组只返回一个布尔值。我将添加var_dump,1秒…如
if(!in_array((array)$this->orders,$prod))返回-1编辑,哦,你想要密钥。你能显示
$this->orders
(或部分)吗?\u数组只返回一个布尔值。我将添加var_dump,1秒…如
if(!in_array((array)$this->orders,$prod))返回-1编辑,哦,你想要钥匙。它不应该是
return-1?您似乎错过了分号。事实上,它已被修复。它不应该是
return-1?你似乎漏掉了分号。事实上,它已经被修复了。