php - 有没有办法重构多个相似的 PHP 三元组?
问题描述
我有一些代码,感觉里面有很多重复。我把它归结为以下部分,但我仍然看到一些重复的东西,感觉应该有一种更简洁的方式来编写它。还有什么可以做的吗,或者是这样吗?
$w1 = ($fin[57] > $fin[60]) ? $tc[57] : $tc[60];
$l1 = ($fin[57] > $fin[60]) ? $tc[60] : $tc[57];
$w2 = ($fin[58] > $fin[59]) ? $tc[58] : $tc[59];
$l2 = ($fin[58] > $fin[59]) ? $tc[59] : $tc[58];
我真正想要的是,如果有办法让三元返回一个真假值数组。像这样的虚构代码:
list($w1, $l1) = (array) ($fin[57] > $fin[60]) ? $tc[57] : $tc[60];
list($w2, $l2) = (array) ($fin[58] > $fin[59]) ? $tc[58] : $tc[59];
解决方案
我相信没有函数你能做的最短的就是这个,但仍然有很多重复:
[$w1, $l1] = $fin[57] > $fin[60] ? [$tc[57], $tc[60]] : [$tc[60], $tc[57]];
如果您正在使用 PHP 7.4 的短闭包,您还可以执行一个非常小的函数(PHP < 7.4 版本更接近另一个答案):
$wlValues = fn($i, $j) => $fin[$i] > $fin[$j] ? [$tc[$i], $tc[$j]] : [$tc[$j], $tc[$i]];
用法:
[$w1, $l1] = $wlValues(57, 60);
推荐阅读
- javascript - 搜索按钮目标= _blank jquery 变量
- javascript - 如何限制输入字段的值?
- python - 如何显示带有我使用 Dash 上传组件上传的文件的 pandas 数据框?
- asp.net - 如何为特定的 IIS 应用程序设置环境变量?
- c++ - 进程以 -1073741571 状态终止(0 分钟,3 秒)
- python - tf.convert_to_tensor(pred_labels) - ValueError: Argument must be a dense tensor: got shape [2, 436, 1024, 2],但想要 [2]
- python - Python collections.Mapping:__iter__ 和 __contains__ 尚未提供的 dict_keys 的使用
- c# - 如何在 Visual Studio 中以特定方向加载图像?
- python - 使用触摸事件获取小部件中图像的像素坐标
- javascript - 为什么这个反向堆栈函数返回未定义而不是预期的输出?