首页 > 解决方案 > 在“if”语句中使用增量

问题描述

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

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

标签: phparraysconditional-statements

解决方案


如果您不关心最大值出现的顶级索引(在本例中为01或),并且您想搜索整个数组,则可以使用和的以下组合:2array_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';
}

此方法在此处的 PHP 文档中进行了描述。请注意,正如我上面所说,如果您关心它,这不会可靠地为您提供索引。如果您想知道匹配是否存在,我只会使用它。

如果您想要索引,或者您特别不想在索引 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';
}

推荐阅读