Узнайте общее количество повторяющихся значений в массиве результатов Codeigniter - PullRequest
0 голосов
/ 22 октября 2011

Я пытаюсь найти количество повторяющихся значений в результате, полученном из активной записи, в codeigniter.

For example:

1 => 12
2 => 21
3 => 22
4 => 21
5 => 12
6 => 45

Есть ли способ, которым мы можем узнать общее число, чтобы оно получилось с 12 = 1, 21 = 2, 22 = 1, 12 = 2, 45 = 1 и т. Д.

Путь Codeigniter был бы отличным, но я также открыт для PHP.

OK array_count_values ​​не работает с массивом ниже:

Array
(
    [0] => Array
        (
            [key_id] => 1790
            [key_name] => printer brisbane
            [link_id] => 1130
            [link_url] => 99cards.com
        )

    [1] => Array
        (
            [key_id] => 1982
            [key_name] => test
            [link_id] => 1130
            [link_url] => 99cards.com
        )

)

Есть ли способ узнать, что счетчик link_id равен 2?

Я нашел ответ сам. Ниже приведен код:

$e = 0;
            foreach ($q as $qs){
                $i = 1;
                foreach ($q as $qss){
                    if($qss['link_id'] == $qs['link_id']){
                        $q[$e]['link_count'] = $i;
                    }
                    $i++;
                }
                $e++;
            }

Ответы [ 2 ]

3 голосов
/ 22 октября 2011

array_count_values() сделано для этой цели

Возвращает ассоциативный массив значений из ввода в качестве ключей и их count в качестве значения.

$array = array(1, "hello", 1, "world", "hello"); 
print_r(array_count_values($array)); 

Приведенный выше пример выведет:

Array (
    [1] => 2
    [hello] => 2
    [world] => 1 )
0 голосов
/ 22 октября 2011

Мы можем сделать это вручную следующим образом:

$count_array = array();
foreach($results as $result)
{
    $link_id = $result['link_id'];
    if(isset($count_array[$link_id]))
    {
        $count_array[$link_id] = $count_array[$link_id]+1;
    }
    else
    {
        $count_array[$link_id] = 1;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...