#php #arrays #wordpress
Вопрос:
Я работаю над проектом, в котором мне нужно суммировать баллы по некоторым тегам. Идея состоит в том, чтобы сделать массив четных значений ключевым, а нечетные значения-значениями, которые я искал в Google, но мне не удалось создать структуру, подобную приведенной ниже. Мне нужна структура массива, как показано ниже, таким образом, я могу легко суммировать значения с помощью одного и того же ключа.
$array = array("22" =gt; 3, "27" =gt; 2, "30" =gt; 1, so on...) from the below array. [0] =gt; 22 [1] =gt; 3 [2] =gt; 27 [3] =gt; 2 [4] =gt; 30 [5] =gt; 1 [6] =gt; 22 [7] =gt; 3 [8] =gt; 25 [9] =gt; 2 [10] =gt; 28 [11] =gt; 1 The code I am using to map the array with key-value pair according to the above logic. $rank = $_POST['ranking_details']; $rinfo = explode('_', $rank); $result = array_map(function($v){ return [$v[0] =gt; $v[1]]; }, $rinfo); print_r($result);
Выход:
Array ( [0] =gt; Array ( [2] =gt; 2 ) [1] =gt; Array ( [3] =gt; ) [2] =gt; Array ( [2] =gt; 7 ) [3] =gt; Array ( [2] =gt; ) [4] =gt; Array ( [3] =gt; 0 )
Ответ №1:
Это то, что вы ищете?
Код:
$arr = array(22, 3, 22, 3, 27, 2, 22, 3, 30, 1); $dic = []; for ($i = 0; $i lt; count($arr); $i = 2) { if (array_key_exists($arr[$i], $dic)) { $dic[$arr[$i]] = $dic[$arr[$i]] $arr[$i 1]; } else { $dic[$arr[$i]] = $arr[$i 1]; } } print_r($dic);
Выход:
Array ( [22] =gt; 9 [27] =gt; 2 [30] =gt; 1 )
Комментарии:
1. Спасибо за вашу помощь. Как я могу суммировать ключ 22 и значения 3 3 = 6
2. Если 22 в 3 раза больше в массиве со значениями 3 3 3 = 9?
3. @ZaheerAbbas, Попробуйте отредактированное решение сверху. Он учитывает случаи с несколькими ключами (3 3 3 = 9)