2013-11-19 3 views
0

В массиве count все true, где категория равна 1 после подсчета категории переместится на 2 thn count all true и т. Д.?Подсчитайте количество вхождений определенного значения внутри цикла

Массив генерироваться:

foreach($_POST as $key => $data) 
{ 
    $a = explode("_", $key); 

    $f = array(
     'category' => $a[1], 
     'answer' => $data 
    ); 
    $f_data[] = $f; 
} 

ИЗ

Array 
(
    [0] => Array 
     (
     ) 

    [1] => Array 
     (
      [category] => 1 
      [answer] => true 
     ) 

    [2] => Array 
     (
      [category] => 1 
      [answer] => true 
     ) 

    [3] => Array 
     (
      [category] => 1 
      [answer] => true 
     ) 

    [4] => Array 
     (
      [category] => 1 
      [answer] => false 
     ) 

    [5] => Array 
     (
      [category] => 1 
      [answer] => false 
     ) 

    [6] => Array 
     (
      [category] => 1 
      [answer] => true 
     ) 

    [7] => Array 
     (
      [category] => 1 
      [answer] => true 
     ) 

    [8] => Array 
     (
      [category] => 2 
      [answer] => true 
     ) 

    [9] => Array 
     (
      [category] => 2 
      [answer] => true 
     ) 

    [10] => Array 
     (
      [category] => 2 
      [answer] => true 
     ) 

    [11] => Array 
     (
      [category] => 2 
      [answer] => false 
     ) 

    [12] => Array 
     (
      [category] => 2 
      [answer] => true 
     ) 

    [13] => Array 
     (
      [category] => 2 
      [answer] => true 
     ) 

) 

Для

array (
    category: 1, 
    count: 5 
), 
array(
    category: 2, 
    count: 5 
) 

ответ

0

Это решение:

$return = array(); 
foreach($cont as $item) { 
    if($item['answer'] == 'true') { 
     $verify = false; 
     foreach($return as $key => $value) { 
      if($value['category'] == $item['category']) { 
       $return[$key]['count']++; 
       $verify = true; 
       break; 
      }  
     } 
     if(!$verify) 
      $return[] = array('category' => $item['category'], 'count' => 1); 
    } 
} 

И это лучшее решение ...

$return = array(); 
foreach($cont as $item) { 
    if($item['answer'] == 'true') { 
     if(array_key_exists($item['category'], $return)) 
      $return[$item['category']]++; 
     else  
      $return[$item['category']] = 1; 
    } 
} 
0

непроверенная, но я считаю, что это то, что вы после (в ожидании каких-либо незначительных ошибок):

foreach($_POST as $key => $data) 
{ 
    $a = explode("_", $key); 

    $f[$a[1]]['category'] = $a[1]; 

    if ($data == "true") { 
     $f[$a[1]]['answer']++; 
    } 
} 
Смежные вопросы