【问题标题】:How to get changed value using array_diff in laravel?如何在 laravel 中使用 array_diff 获取更改的值?
【发布时间】: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:。有没有办法让这两个不出现。我只想得到正确的结果,例如namesamsung。谢谢。

【问题讨论】:

  • 您要检查哪些字段已更新?
  • @mohammadmahdibaleghsefat 是的,我想要那个
  • 你确定 $request->product 和 $product 都是数组吗?也许其中之一是对象?特别是 $request->product 。使用 $diff = array_diff(((array)$request->product), ((array)$product ));并检查错误?

标签: php laravel


【解决方案1】:

试试这个

$diff = array_diff(array_map('serialize', $request->product), array_map('serialize', $product));

$multidimensional_diff = array_map('unserialize', $diff);

print_r($multidimensional_diff);

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • 这是我所期待的答案。感谢您对我工作的帮助
【解决方案2】:

如果您想检查哪些字段被更新,您可以使用isDirsty 方法。例如,你想检查用户是否更改了电子邮件,发送电子邮件验证:

if ($user->isDirty('email'))
{
    // Do something
}

Laravel document

【讨论】:

  • 如果使用这种方法,比如有10个字段,检查10次与否
猜你喜欢
  • 2017-10-11
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
  • 2021-07-29
  • 1970-01-01
  • 2019-04-11
相关资源
最近更新 更多