Как увеличить значение массива на 1 в цикле foreach другого массива в PHP - PullRequest
0 голосов
/ 15 апреля 2019

Я делаю программу, которая должна рассчитывать, сколько раз значение существует в массиве.Пока это мой код:

$aArray1 = array();
$nCount = 1;
foreach ($_SESSION['array2'] as $value) {
    if (array_key_exists($value, $aArray1)) {
        // Increment the value of the existing key(number).
    }else{
        // add $value to $aArray1 and give it a value 1.
        $aArray1[$value] = $nCount;
    }
}

Я хочу знать, как я могу увеличить значение существующего числа в $ aArray1 на 1.

Когда я ставлю числа: (4-4-5-6-7-7-7-8-4-4) в моем массиве, используя 10 текстовых полей с методом post, и я печатаю свой $aArray1, он показывает это:

Array ( [4] => 1 [5] => 1 [6] => 1 [7] => 1 [8] => 1 )

Но я хочу показать это:

Array ( [4] => 4 [5] => 1 [6] => 1 [7] => 3 [8] => 1 )

пожалуйста, кто-нибудь может мне помочь.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019
$_SESSION['array2'] = array(4,4,5,6,7,7,7,8,4,4,4,8);
$aArray1 = array();

foreach ($_SESSION['array2'] as $value) {
 if (array_key_exists($value, $aArray1)) {
      $aArray1[$value] = ($aArray1[$value] + 1);
    // Increment the value of the existing key(number).
  }else{
    // add $value to $aArray1 and give it a value 1.
    $aArray1[$value] = 1;
  }
}

Для результата: print_r ($ aArray1);

Array ( [4] => 5 [5] => 1 [6] => 1 [7] => 3 [8] => 2 )

0 голосов
/ 15 апреля 2019

Ваш код может быть уменьшен до:

$aArray1 = array();
foreach ($_SESSION['array2'] as $value) {
    if (!isset($aArray1[$value])) {
        $aArray1[$value] = 0;
    }
    $aArray1[$value]++;
}

И в дальнейшем - это то же самое, что делает array_count_values.Так что используйте его вместо:

$aArray1 = array_count_values($_SESSION['array2']);
...