Подсчет элементов с одинаковым именем в массиве в php - PullRequest
0 голосов
/ 12 апреля 2019

Итак, у меня есть этот массив:

enter image description here

Я не знаю, понятно ли это, но в этом массиве много элементов с одинаковым именем, я хочу подсчитать эти элементы и показать его, вот как я создаю массив:

 foreach ($rowa as $rowsa)
{
    $sql = "SELECT count(*) as NUMBER FROM BANDZENDINGEN WHERE FB_AFGESLOTEN = 'F' AND FB_AKTIEF = 'T' AND FI_AFVOERKANAAL = 1 AND FI_RAYONID = $rowsa  AND FI_VERRIJKINGID < 1;";
    $sfh = $dbh->prepare($sql);
    $sfh->execute();
    $row = $sfh->fetchAll(PDO::FETCH_COLUMN, 0);

    array_push($row, $rows['FC_RAYON']);
    print_r($row);

}

Я уже пробовал это:

количество повторяющихся элементов в массиве в php

Мне кажется, этот ответчик не работает, но, возможно, я что-то не так делаю.

btw $ row ['FC_RAYON'] из другого запроса, он не имеет отношения к этому вопросу, но если вы хотите его увидеть, я отредактирую свой пост, чтобы показать его.

Так я должен сделать? не могли бы вы помочь.

EDIT

лучше посмотрите на массив:

 Array ( [0] => 2 [1] => RT-SCB-PB01 ) 
 Array ( [0] => 0 [1] => RT-SCB-PB01 ) 
 Array ( [0] => 3 [1] => RT-SCB-PB01 ) 
 Array ( [0] => 1 [1] => ASDC-PBSN ) 
 Array ( [0] => 0 [1] => ASDC-PBSN ) 
 Array ( [0] => 0 [1] => ASDC-PBSN ) 
 Array ( [0] => 0 [1] => ASDC-PBSN ) 
 Array ( [0] => 1 [1] => ASDW-PBSN ) 

Это очень маленькая часть массива.

РЕДАКТИРОВАТЬ 2

 Array
(
  [0] => 2
  [1] => RT-SCB-PB01
)

 Array
(
  [0] => 2
  [1] => RT-SCB-PB01
)

Array
(
  [0] => 1
  [1] => RT-SCB-PB01
)

Array
(
  [0] => 3
  [1] => RT-SCB-PB01
)

Array
(
  [0] => 2
  [1] => ASDC-PBSN
)

Array
(
  [0] => 2
  [1] => ASDC-PBSN
)

Array
(
  [0] => 1
  [1] => ASDC-PBSN
)

Array
(
  [0] => 1
  [1] => ASDW-PBSN
)

Array
(
  [0] => 0
  [1] => ASDW-PBSN
)

Array
(
  [0] => 0
  [1] => ASDW-PBSN
)

, так что это вот лучший взгляд на массив, данные в массиве различны, потому что это очень активная база данных

РЕДАКТИРОВАТЬ 3

если вы ввели это мой результат, вы можете увидеть его здесь:

https://mega.nz/#!uvpBWSoL!V6xYCuJ5mCWwiYqnoaz6LiYynioCylWDxPYioV_9qpo открыть краской

Ответы [ 2 ]

4 голосов
/ 12 апреля 2019

array_count_values ​​

array_count_values ​​() возвращает массив, используя значения массива в качестве ключей и их частоту в массиве в качестве значений.

<code>$varArray = array(); // take a one empty array

foreach ($rowa as $rowsa)
{
    $sql = "SELECT count(*) as NUMBER FROM BANDZENDINGEN WHERE FB_AFGESLOTEN = 'F' AND FB_AKTIEF = 'T' AND FI_AFVOERKANAAL = 1 AND FI_RAYONID = $rowsa  AND FI_VERRIJKINGID < 1;";
    $sfh = $dbh->prepare($sql);
    $sfh->execute();
    $row = $sfh->fetchAll(PDO::FETCH_COLUMN, 0);

    array_push($row, $rows['FC_RAYON']);
    //print_r($row);
    //array_push($varArray,$rows['FC_RAYON']); // Also May I think $rows['FC_RAYON'] is give value like RT-SCB-PB01,ASDC-PBSN etc.
    array_push($varArray,$row[1]); // I have push the send value of array like RT-SCB-PB01,ASDC-PBSN etc. and make in single array.
}

$dupArrays = array_count_values($varArray); // It will return Counts all the values of an array
echo 'Total No Items: '.count($dupArrays).'<br><br>';
echo "<pre>";
print_r($dupArrays);
echo "
";

Вывод будет:

Total No Items: 3

Array
(
    [RT-SCB-PB01] => 3 // Count of duplicate value of RT-SCB-PB01 is 3
    [ASDC-PBSN] => 4 // Count of duplicate value of ASDC-PBSN is 3
    [ASDW-PBSN] => 1 // Count of duplicate value of ASDW-PBSN is 3
)

Получить с помощью метода foreach

foreach($dupArrays as $key => $value){
    echo $key.' Count '.$value.' times.';
    echo "<br>";
}

Выход:

RT-SCB-PB01 Count 3 times.
ASDC-PBSN Count 4 times.
ASDW-PBSN Count 1 times.
0 голосов
/ 14 апреля 2019

не могли бы вы просто сделать один запрос, подобный этому:

$sql = "SELECT FI_RAYONID,COUNT(FI_RAYONID) as NUMBER 
    FROM BANDZENDINGEN 
    WHERE FB_AFGESLOTEN = 'F' 
    AND FB_AKTIEF = 'T' 
    AND FI_AFVOERKANAAL = 1  
    AND FI_VERRIJKINGID < 1 
    GROUP BY FI_RAYONID ;";
$sfh = $dbh->prepare($sql);
$sfh->execute();
$result = $sfh->fetch(PDO::FETCH_KEY_PAIR);

тогда $ result становится массивом идентификаторов и счетчиков с ключами, так что вы можете работать с ним намного проще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...