gpt4 book ai didi

php - 检查数组中的所有值是否相同

转载 作者:IT王子 更新时间:2023-10-29 00:49:56 26 4
gpt4 key购买 nike

我需要检查数组中的所有值是否都相同。

例如:

$allValues = array(
'true',
'true',
'true',
);

如果数组中的每个值都等于 'true',那么我想回显 'all tr​​ue'。如果数组中的任何值等于 'false' 那么我想回显 'some false'

关于如何执行此操作的任何想法?

最佳答案

所有值都等于测试值:

// note, "count(array_flip($allvalues))" is a tricky but very fast way to count the unique values.
// "end($allvalues)" is a way to get an arbitrary value from an array without needing to know a valid array key. For example, assuming $allvalues[0] exists may not be true.
if (count(array_flip($allvalues)) === 1 && end($allvalues) === 'true') {


}

或者只是测试你不想要的东西是否存在:

if (in_array('false', $allvalues, true)) {

}

如果您确定数组中只有 2 个可能的值,请首选后一种方法,因为它效率更高。但如果有疑问,慢速程序总比错误程序好,所以请使用第一种方法。

如果你不能使用第二种方法,你的数组非常大,并且数组的内容可能有超过 1 个值(特别是如果第 2 个值很可能出现靠近数组的开头),执行以下操作可能会更快:

/**
* Checks if an array contains at most 1 distinct value.
* Optionally, restrict what the 1 distinct value is permitted to be via
* a user supplied testValue.
*
* @param array $arr - Array to check
* @param null $testValue - Optional value to restrict which distinct value the array is permitted to contain.
* @return bool - false if the array contains more than 1 distinct value, or contains a value other than your supplied testValue.
* @assert isHomogenous([]) === true
* @assert isHomogenous([], 2) === true
* @assert isHomogenous([2]) === true
* @assert isHomogenous([2, 3]) === false
* @assert isHomogenous([2, 2]) === true
* @assert isHomogenous([2, 2], 2) === true
* @assert isHomogenous([2, 2], 3) === false
* @assert isHomogenous([2, 3], 3) === false
* @assert isHomogenous([null, null], null) === true
*/
function isHomogenous(array $arr, $testValue = null) {
// If they did not pass the 2nd func argument, then we will use an arbitrary value in the $arr (that happens to be the first value).
// By using func_num_args() to test for this, we can properly support testing for an array filled with nulls, if desired.
// ie isHomogenous([null, null], null) === true
$testValue = func_num_args() > 1 ? $testValue : reset($arr);
foreach ($arr as $val) {
if ($testValue !== $val) {
return false;
}
}
return true;
}

注意:一些答案​​将原始问题解释为(1)如何检查所有值是否相同,而其他人则将其解释为(2)如何检查所有值是否相同< strong>and 确保该值等于测试值。您选择的解决方案应注意该细节。

我的前 2 个解决方案回答了 #2。我的 isHomogenous() 函数回答 #1,如果您将第二个参数传递给它,则回答 #2。

关于php - 检查数组中的所有值是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10560658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com