【问题标题】:Using increment inside of an "if" statement在“if”语句中使用增量
【发布时间】:2023-03-05 20:58:01
【问题描述】:

我今天遇到了一个问题,增量器需要像这样编码(在 if 语句内部,我必须使用 && 运算符才能获得正确的结果。我无法使用 forforeach 得到正确的结果。有没有更好的写法?

if ($array[0]['key'] !== $var && $array[1]['key'] !== $var && $array[2]['key'] !== $var): ?>
  //echo something here
endif;

【问题讨论】:

    标签: php arrays conditional-statements


    【解决方案1】:

    如果您不关心出现最大值的顶级索引(在本例中为 012并且您想要搜索整个数组,你可以使用array_searcharray_column的这种组合:

    $array = [
        ['key' => 'foo'],
        ['key' => 'bar'],
        ['key' => 'baz'],
    ];
    
    $var = 'hello world';
    
    if (array_search($var, array_column($array, 'key')) === false) {
        echo 'var does not exist';
    }
    

    这个方法是described in the PHP documentation here。请注意,正如我上面所说,如果您关心它,这不会可靠地为您提供索引。如果您想知道匹配是否存在,我只会使用它。

    如果您想要索引,或者您特别不想搜索索引 2(或任何其他任意索引)之外的内容,您可以创建如下函数:

    $array = [
        ['key' => 'foo'],
        ['key' => 'bar'],
        ['key' => 'baz'],
    ];
    
    $var = 'hello world';
    
    function keyValueExists($array, $key, $value, $maxIndex = null) {
        foreach ($array as $index => $item) {
            if (isset($item[$key]) && $item[$key] === $value) {
                return true;
            }
    
            if ($maxIndex !== null && $index == $maxIndex) {
                break;
            }
        }
    
        return false;
    }
    
    if (keyValueExists($array, 'key', $var, 2) === false) {
        echo 'var does not exist';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多