如何比较保存键的数组值?



我不知道如何检查数组值是否相等。数组总是只有2个键,需要保存它们,键未知。例如:

$arr = array(
5 => 180,
3 => 120
);
if ($arr['key1_value'] != $arr['key2_value']) {
$variable = $arr['key1'];
} else {
$variable = ($arr['key1'] + $arr['key2']) / 2;
}

这不是很清楚…但如果我参考你的意见,我认为这种方法可以解决你的问题。

// Here is your data
$arr = array(
5 => 180,
3 => 120
);
// You seem to be interested by keys as a return, so flip the array
$flip = array_flip($arr);
// Return a mean or a key, depending on comparison between flip and original array
$variable = (count($flip) < 2) ? array_sum(array_keys($arr))/2 : array_shift($flip);

澄清最后一行:

  • 如果$flip中的值较低,这意味着您的两个值相等(因为在翻转之后不能接受两个相同的键):在这种情况下,我们返回键的平均值(这里它有效,因为您确认键始终是整数)
  • 如果没有,则返回第一个键(我认为这是您所期望的,但不确定)

编辑:在我的命题中,我对数组进行了计数。正如你所说,它总是2个比较值,我直接用"2"代替它。

使用array_values()array_keys()获取值和键的数组,但使用从零开始(可预测)的键集

$arr = array(
5 => 180,
3 => 120
);
$v = array_values($arr);
$k = array_keys($arr);
if ($v[0] != $v[1]) {
$variable = $k[0];
} else {
$variable = ($k[0] + $k[1]) / 2;
}

相关内容

  • 没有找到相关文章

最新更新