我有一个包含两个值$arr = ['up', 'down'];
的数组,如果有人投了一张赞成票($vote = 'up';
),数据库中的up字段应该增加1,down字段应该减少1。
我可以使用if else条件:
if ($vote === 'up') {
$voteModel['up'] = $voteModel['up'] + 1;
$voteModel['down'] = $voteModel['down'] - 1;
} else {
$voteModel['up'] = $voteModel['up'] - 1;
$voteModel['down'] = $voteModel['down'] + 1;
}
但我想知道这是否可以做得更短。我想的是一个arr = ['up' => 'down'];
,但不幸的是,我没有得到任何与现在。你有什么想法?谢谢!
4条答案
按热度按时间kwvwclae1#
解决方案1:
解决方案二:
hc2pp10m2#
你可以通过使用一些参考数据来简化它。使用
$vote
值在$voteVals数组中找到一个条目,告诉它在每种情况下增加和减少什么值。然后简单地循环通过投票模型,并通过更新参考数据中指定的数量来操作每个条目。匹配只需要使用"up"和"down"字符串值就可以完成:输出:
数组(2){["向上"]=〉整数(1)["向下"]=〉整数(-1)}
如您所见,这将"up"条目增加1,"down"值减少1。
实时演示:https://3v4l.org/9oFHH
fd3cxomn3#
https://phpize.online/sql/mysql57/undefined/php/php81/77d709373d4e930e0e0113c11984e0b8/
wribegjk4#
您可以使用以下代码