Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.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 该方法未找到正确的数据_Php_Laravel - Fatal编程技术网

Php 该方法未找到正确的数据

Php 该方法未找到正确的数据,php,laravel,Php,Laravel,我有一个收藏: +items: Collection {#173 ▼ #items: array:1 [▼ "2" => {#164 ▼ +"name": "101 роза" +"price": 4999 +"is_sale": 0 +"sale_price": null +"sale_percent": null +"can_use_promocode": 1

我有一个收藏:

+items: Collection {#173 ▼
    #items: array:1 [▼
      "2" => {#164 ▼
        +"name": "101 роза"
        +"price": 4999
        +"is_sale": 0
        +"sale_price": null
        +"sale_percent": null
        +"can_use_promocode": 1
        +"qty": 6
      }
    ]
  }
然后,我尝试使用方法
has()
检查购物车中是否已经存在此产品:

if ($this->items->has($productId)) {
     $this->items->$productId->qty++;
}
但这是行不通的。尝试做:

dump($this->items->has($productId));
但我只得到了
false
。我哪里出错了

我做
$this->items->$productId->qty++对吗,它会工作吗

UPD:

dump($this->items,$productId,$this->items->has($productId),$this->items->has(2))的输出

Collection {#172 ▼
  #items: array:1 [▼
    "2" => {#163 ▼
      +"name": "101 rose"
      +"price": 4999
      +"is_sale": 0
      +"sale_price": null
      +"sale_percent": null
      +"can_use_promocode": 1
      +"qty": 1
    }
  ]
}

"2"

false

false
如果有帮助的话:Laravel 5.2.45,我从这里获取数据(从数据库获取数据并保存在类变量中):


已查找一个键,您正在传入一个值。如果要查找匹配的项,可能需要使用
where
或类似的方法。

如果要查找键,则要传入值。如果要查找匹配项,可能需要使用
where
或类似的方法。

您可以将集合转换为数组,添加数据,然后将其转换回集合:

$array = $collection->toArray();
$array[$key]['qty']++;
$collection = collect($array);
或者,您可以使用和更新集合:


您可以将集合转换为数组,添加数据,然后将其转换回集合:

$array = $collection->toArray();
$array[$key]['qty']++;
$collection = collect($array);
或者,您可以使用和更新集合:


感谢您提供附加代码。这个问题是由您使用json引起的:您正在对json进行编码和解码,这是在创建一个对象数组,而不是一个关联数组

json\u decode
接受一个参数
assoc
,该参数为“”,因此您需要传递此参数

替换此项:

$cart = json_decode($cart);
为此:

$cart = json_decode($cart, true);

感谢您提供附加代码。这个问题是由您使用json引起的:您正在对json进行编码和解码,这是在创建一个对象数组,而不是一个关联数组

json\u decode
接受一个参数
assoc
,该参数为“”,因此您需要传递此参数

替换此项:

$cart = json_decode($cart);
为此:

$cart = json_decode($cart, true);

但是在我的例子中,
([“2”=>[..)
,我需要用键而不是值来搜索。或者我错了?但是在我的例子中,
([“2”=>[..)
,我需要用键而不是值来搜索。或者我错了?你已经问了3个关于集合的问题,你自己用tinker来测试它们吧…(
php artisan tinker
)。如果你能在更短的时间内自己解决问题,那么你真的值得浪费时间写问题吗?@Kyslik我问了这个问题,只是因为我不知道哪里出了问题(我在所有情况下都遵循了文档)。例如,检查这个问题。有一个键
“2”
,但方法
有()
返回false。我应该在这里测试什么?这取决于您如何获得问题中缺少的“您的集合”,无论哪种方式,您都应该自己找出问题的答案,然后运行以获得答案,作为最后的手段。您确定
productId
等于
2
?集合和
具有(2)
查找是正确的,因此问题一定是您的
productId
变量有问题。请尝试将
has($productId)
更改为
has(2)
以确认这一点,然后
dump($productId)
以查看值。@sam检查了它,我的
$productId
2
,我尝试进行
转储($this->items->has('2'))
,它返回
false
您已经问了3个关于集合的问题,只需使用tinker自己测试它们…(
php artisan tinker
)。如果你能在更短的时间内自己解决问题,那么你真的值得浪费时间写问题吗?@Kyslik我问了这个问题,只是因为我不知道哪里出了问题(我在所有情况下都遵循了文档)。例如,检查这个问题。有一个键
“2”
,但方法
有()
返回false。我应该在这里测试什么?这取决于您如何获得问题中缺少的“您的集合”,无论哪种方式,您都应该自己找出问题的答案,然后运行以获得答案,作为最后的手段。您确定
productId
等于
2
?集合和
具有(2)
查找是正确的,因此问题一定是您的
productId
变量有问题。请尝试将
has($productId)
更改为
has(2)
以确认这一点,然后
dump($productId)
以查看值。@sam检查了它,我的
$productId
2
,我尝试进行
转储($this->items->has('2'))
,它返回
false
谢谢!但我的问题是为什么方法
has()
不返回
true
?我得到了一个键为
的项“2”
,但这不起作用:C@Alexxosipov键看起来像是字符串而不是整数,也许这就是问题所在。@Alexosipov您也不能这样做
$this->items->productId->qty++;
,我认为这就是问题所在,我已经向您展示了如何修改数据,而不是使用
$this->items->$productId->qty++;
。否,这是第二个问题,这并不重要。第一个问题是关于方法
has()
和我的collection@Alexxosipov在您试图以任何方式修改集合之前,请先放置
dump($this->items->has('2'))
。谢谢!但我的问题是为什么方法
has()
不返回
true
?我得到一个带有键
“2”的项目
,但这不起作用:C@Alexxosipov键看起来像是字符串而不是整数,也许这就是问题所在。@Alexosipov您也不能这样做
$this->items->productId->qty++;
,我认为这就是问题所在,我已经向您展示了如何修改数据,而不是使用
$this->items->$productId->qty++;
。否,这是第二个问题,这并不重要。第一个问题是关于方法
has()
和我的collection@Alexxosipov在您试图以任何方式修改集合之前,请将
dump($this->items->has('2'))
放入。