我有一个包含两个值的数组$arr = ['up', 'down'];。如果有人投了赞成票 ( $vote = 'up';),则数据库中的向上字段应增加 1,向下字段应减少 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;
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否可以缩短这个时间。我正在考虑,arr = ['up' => 'down'];但不幸的是我现在还没有任何进展。你有什么想法?谢谢你!
解决方案一:
$arg = $vote === 'up' ? [1,-1] : [-1,1];
$voteModel['up'] += $arg[0];
$voteModel['down'] += $arg[1];
Run Code Online (Sandbox Code Playgroud)
解决方案2:
$voteModel['up'] += ($vote === 'up' ? 1 : -1);
$voteModel['down'] += ($vote !== 'up' ? 1 : -1);
Run Code Online (Sandbox Code Playgroud)
解决方案 3(如果 中 'up' 是索引 1,'down' 是索引 0 $voteModel):
$voteModel[$vote==='up']++;
$voteModel[$vote==='down']--;
Run Code Online (Sandbox Code Playgroud)
解决方案 3b(如果我们想保留关联键):
$arr = ['down','up'];
$voteModel[$arr[$vote==='up']]++;
$voteModel[$arr[$vote==='down']]--;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |