Сделайте первый ключ элемента массива и второе значение в плоском массиве php

#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)