我是PHP的新手,我有一个简单的问题。
更新:我正在使用PHP 5.6(最好的解决方案是更新PHP版本,但是假设我只能使用PHP 5.6)
我有如下代码:
function findOrCreateMasterRecord ($masterTableName, $masterName) {
if (isset($sampleArr[$masterTableName][$masterName])) {
return $sampleArr[$masterTableName][$masterName];
}
return getNewMasterIndex($masterTableName, $masterName);
}
此代码正常工作。但是我想使“ if”块更简单,因为它接近相同索引的两倍($ sampleArr [$ masterTableName] [$ masterName]),我认为这有点.....不好
有没有办法使此功能更有效?
谢谢。
答案 0 :(得分:3)
在 PHP 7 + 中,您可以使用 null coalescing operator: ??
function findOrCreateMasterRecord ($masterTableName, $masterName)
{ return $sampleArr[$masterTableName][$masterName] ?? getNewMasterIndex($masterTableName, $masterName); }
如果不是在PHP 7中,则ternary operator可以缩短您的代码,但仍然是多余的:
function findOrCreateMasterRecord ($masterTableName, $masterName)
{ return isset($sampleArr[$masterTableName][$masterName]) ? $sampleArr[$masterTableName][$masterName] : getNewMasterIndex($masterTableName, $masterName); }
使用较短的变量名可以更好地阅读:
// PHP 7
function findOrCreateMasterRecord ($table, $name)
{ return $arr[$table][$name] ?? getNewMasterIndex($table, $name); }
// Under PHP 7
function findOrCreateMasterRecord ($table, $name)
{ return isset($arr[$table][$name]) ? $arr[$table][$name] : getNewMasterIndex($table, $name); }
答案 1 :(得分:0)
您可以减少到以下内容,因为您的条件将永远无法满足:
<?php
function findOrCreateMasterRecord ($masterTableName, $masterName) {
return getNewMasterIndex($masterTableName, $masterName);
}