2015-10-05 1 views
-1

У меня это в моем коде, чтобы получить частоты массива.PHP get arrayfrequency using for loop

$arr = array(10, 9, 23, 7, 40, 43, 7, 5, 10, 7); 
$frq = array_count_values($arr); 
foreach($frq as $key => $values){ print $key . " = " . $values . "<br>";} 

выход:

5 = 1 
7 = 3 
9 = 1 
10 = 2 
23 = 1 
40 = 1 
43 = 1 

В настоящее время есть способ решить эту петлю, используя for только - т.е. без использования функции array_count_values()? Благодарю.

+1

Довольно неясно. Что вы хотите достичь здесь. –

+0

Привет @Uchiha, поскольку вы можете увидеть образец вывода из моего кода, чтобы рассчитать количество событий, что я хочу, как я могу это сделать, не используя функцию array_count_values ​​только для цикла .... – user5408493

ответ

5

Вы можете попробовать это -

$arr = array(10, 9, 23, 7, 40, 43, 7, 5, 10, 7); 
$frq= array(); 
foreach($arr as $a) { 
    if(array_key_exists($a, $frq)) { 
     $frq[$a] += 1; 
    } 
    else 
    { 
     $frq[$a] = 1; 
    } 
} 
foreach($frq as $key => $values){ 
    print $key . " = " . $values . "<br>"; 
} 

Без функции -

foreach($arr as $a) { 
    $frq[$a] = (!empty($frq[$a])) ? ($frq[$a] + 1) : 1; 
} 
+0

спасибо @ b0s3..but Мне просто нужен цикл for ... нет другой функции, такой как array_key_exists.just для loop..thanks .. – user5408493

+1

Тогда вам нужно использовать больше циклов. Кстати, почему бы не использовать эти функции? –

+0

, потому что в C или javascript нет функции типа array_key_exists. – user5408493

0

Делают это, как показано ниже -

<?php 
$arr = array(10, 9, 23, 7, 40, 43, 7, 5, 10, 7); 
$frq= array(); 
foreach($arr as $value) 
{ 
    $frq[$value]=isset($frq[$value])?$frq[$value]+1:1; 
} 
print_r($frq); 
?> 

ВЫВОД

Array ([10] => 2 [9] => 1 [23] => 1 [7] => 3 [40] => 1 [43] => 1 [5] => 1)