if语句内用自增和&&操作符,不使用for/foreach有更优写法吗
优化写法参考
写法1:符合「自增逻辑放if内部、必须用&&」要求的实现
$i = 0; if ($array[$i++]['key'] !== $var && $array[$i++]['key'] !== $var && $array[$i++]['key'] !== $var): //echo something here endif;
无需手动硬编码0/1/2的索引值,自增逻辑完全嵌入if判断条件内,和你原有的&&逻辑完全等效,后续要扩展校验的数组元素数量,只需要追加对应&& $array[$i++]['key'] !== $var片段即可,避免手写错索引的问题。
写法2:无需逐个写判断条件的简洁实现(适合校验元素数量可能调整的场景)
如果不需要强制用&&语法,更推荐下面可维护性更高的写法:
支持严格全等判断版本
// 第三个参数传true开启全等校验,和原逻辑的!==效果完全一致 if (!in_array($var, array_column(array_slice($array, 0, 3), 'key'), true)): //echo something here endif;
PHP 8.1+ 更直观的版本
if (count(array_filter(array_slice($array, 0, 3), fn($item) => $item['key'] === $var)) === 0): //echo something here endif;
两种写法都只需要修改array_slice的第二个参数就能调整校验的数组元素数量,不需要修改判断逻辑本身。
内容的提问来源于stack exchange,提问作者Rob Myrick
相关产品推荐
相关产品推荐

