我不知道如何檢查陣列值是否相等。陣列總是只有 2 個鍵,需要保留它們,鍵未知。例如:
$arr = array(
5 => 180,
3 => 120
);
if ($arr['key1_value'] != $arr['key2_value']) {
$variable = $arr['key1'];
} else {
$variable = ($arr['key1'] $arr['key2']) / 2;
}
uj5u.com熱心網友回復:
使用array_values()或array_keys()獲取此陣列中的值的陣列,但具有基于零的(可預測的)鍵集
$arr = array(
5 => 180,
3 => 120
);
#$v = array_values($arr);
$v = array_keys($arr);
if ($v[0] != $v[1]) {
$variable = $v[0];
} else {
$variable = ($v[0] $arr[1]) / 2;
}
uj5u.com熱心網友回復:
這不是很清楚......但如果我參考你的評論,我應該說這種方法可以解決你的問題:
// 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”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334118.html
上一篇:使用另一個陣列更新物件陣列
