求教一个素组问题

$arr=[            'id'=>[
                1,
                2
            ],            'temp'=>[                'x','y'
            ],            'user'=>[                 'b','f'
            ]
         ];
         
       这样的数组如何生成两条update的sql语句
       update set temp=x ,user=b where id=1
       update set temp=y,user=f where id=2


红颜莎娜
浏览 457回答 1
1回答

皈依舞

<?php$arr=[&nbsp;&nbsp;&nbsp;&nbsp;'id'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 &nbsp;&nbsp;&nbsp;&nbsp;],&nbsp;&nbsp;&nbsp;&nbsp;'temp'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'x','y' &nbsp;&nbsp;&nbsp;&nbsp;],&nbsp;&nbsp;&nbsp;&nbsp;'user'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'b','f' &nbsp;&nbsp;&nbsp;&nbsp;] ]; $sqls&nbsp;=&nbsp;[]; $whereKey&nbsp;=&nbsp;key($arr); $whereParams&nbsp;=&nbsp;array_shift($arr); $updateKeys&nbsp;=&nbsp;array_keys($arr);foreach&nbsp;($whereParams&nbsp;as&nbsp;$index&nbsp;=>&nbsp;$whereValue)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$updateSqlArr&nbsp;=&nbsp;array_map(function($updateKey)&nbsp;use&nbsp;($index,&nbsp;$arr)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$updateKey&nbsp;.&nbsp;'&nbsp;=&nbsp;'&nbsp;.&nbsp;$arr[$updateKey][$index]; &nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;$updateKeys); &nbsp;&nbsp;&nbsp;&nbsp;$sqls[]&nbsp;=&nbsp;'update&nbsp;tablename&nbsp;set&nbsp;'&nbsp;.&nbsp;implode(',&nbsp;',&nbsp;$updateSqlArr)&nbsp;.&nbsp;'&nbsp;where&nbsp;'&nbsp;.&nbsp;$whereKey&nbsp;.&nbsp;'&nbsp;=&nbsp;'&nbsp;.&nbsp;$whereValue; } var_dump($sqls);结果array(2)&nbsp;{ &nbsp;&nbsp;[0]=>&nbsp;&nbsp;string(52)&nbsp;"update&nbsp;tablename&nbsp;set&nbsp;temp&nbsp;=&nbsp;x,&nbsp;user&nbsp;=&nbsp;b&nbsp;where&nbsp;id&nbsp;=&nbsp;1" &nbsp;&nbsp;[1]=>&nbsp;&nbsp;string(52)&nbsp;"update&nbsp;tablename&nbsp;set&nbsp;temp&nbsp;=&nbsp;y,&nbsp;user&nbsp;=&nbsp;f&nbsp;where&nbsp;id&nbsp;=&nbsp;2"}如果使用 ORM 框架更新数据例如Article::where($whereKey, $whereValue)->update($updateArr);,可以改为<?php$arr=[&nbsp;&nbsp;&nbsp;&nbsp;'id'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 &nbsp;&nbsp;&nbsp;&nbsp;],&nbsp;&nbsp;&nbsp;&nbsp;'temp'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'x','y' &nbsp;&nbsp;&nbsp;&nbsp;],&nbsp;&nbsp;&nbsp;&nbsp;'user'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'b','f' &nbsp;&nbsp;&nbsp;&nbsp;] ];//&nbsp;数组第一个元素是&nbsp;where&nbsp;条件,&nbsp;其余的所有元素都是更新对象$whereKey&nbsp;=&nbsp;key($arr);//&nbsp;获取&nbsp;where&nbsp;条件并从数组去掉$whereParams&nbsp;=&nbsp;array_shift($arr); $updateKeys&nbsp;=&nbsp;array_keys($arr);foreach&nbsp;($whereParams&nbsp;as&nbsp;$index&nbsp;=>&nbsp;$whereValue)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$updateArr&nbsp;=&nbsp;[];&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;($updateKeys&nbsp;as&nbsp;$updateKey)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$updateArr[$updateKey]&nbsp;=&nbsp;$arr[$updateKey][$index]; &nbsp;&nbsp;&nbsp;&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP