【发布时间】:2022-01-26 08:41:56
【问题描述】:
public function changeData(Request $request)
{
$product = Product::where('_id', '=', $request->product['_id'])->first()->toArray();
//result product :
// array(4) {
// ["_id"]=>
// string(24) "5fffc00df116005c724859f2"
// ["name"]=>
// string(6) "iphone"
// ["slug"]=>
// string(14) "product-iphone"
// ["status"]=>
// string(14) "1"
// }
// result $request->product :
// array(4) {
// ["_id"]=>
// string(24) "5fffc00df116005c724859f2"
// ["name"]=>
// string(7) "samsung"
// ["slug"]=>
// string(15) "product-samsung"
// ["status"]=>
// string(14) "1"
// }
$diff = array_diff($request->product, $product);
var_dump($diff);
}
错误: '数组到字符串的转换'
如果我使用:
$diff = array_diff(array_map('serialize',$request->product), array_map('serialize',$product));
然后会返回如下结果:
array(2) {
["name"]=>
string(15) "s:6:"samsung";"
["slug"]=>
string(25) "s:15:"product-samsung";"
}
上面的结果对我的需要是正确的。但它在结果中显示"s:6: 和"s:15:。有没有办法让这两个不出现。我只想得到正确的结果,例如name 是samsung。谢谢。
【问题讨论】:
-
您要检查哪些字段已更新?
-
@mohammadmahdibaleghsefat 是的,我想要那个
-
你确定 $request->product 和 $product 都是数组吗?也许其中之一是对象?特别是 $request->product 。使用 $diff = array_diff(((array)$request->product), ((array)$product ));并检查错误?