2016-02-01 3 views
1

Мне нужно сохранить некоторые цифры в моем массиве. Цифрами являются длительность того, как долго пользователь находился на моем сайте.Как сделать случай переключения с сохранением в том же массиве?

нравится:

duration  quantity 
0-30 sek  50 
30sek-2min  100 
.... 

Так 50 пользователей было около 0-30 сек на веб-странице.

Теперь у меня есть этот массив $ visit_length с этим выходом:

Array 
(
    [0] => 3636 
    [1] => 3637 
    [2] => 3 
    [3] => 40 
    [4] => 9 
) 

Это длительность сколько secconds пользователя был на моем сайте

Теперь я хочу сделать новый массив. До этого нового массива Мне нужен каждый элемент и ап если/другие или переключатель/случай

так:

$dauer_result = []; 
     foreach ($visit_lenght as $lenght) { 
      switch ($lenght) { 
       case $lenght < 30: 
        $dauer_result = count($lenght); 
        continue; 
       case $lenght > 30 and $lenght < 120: 
        $dauer_result = count($lenght); 
        continue; 
       case $lenght > 120 and $lenght < 300: 
        $dauer_result = count($lenght); 
        continue; 
       case $lenght > 300 and $lenght < 900: 
        $dauer_result = count($lenght); 
        continue; 
       case $lenght > 900 and $lenght < 1800: 
        $dauer_result = count($lenght); 
        continue; 
       case $lenght > 1800 and $lenght < 3600: 
        $dauer_result = count($lenght); 
        continue; 
       case $lenght > 3600: 
        $dauer_result = count($lenght); 
      } 
     } 

, конечно, это говорит, что если $ длина больше, чем «количество secconds», чем сохранить результат графа ($ длина) в новом массиве $ dauer_length

, например: первые два ключа переменной $ visit_length являются 3636 и 3637

, что означает, что они находятся в последнем случае. поэтому в $ dauer_result должно быть написано два, потому что оба они выше 3600.

Или, может быть, у кого-то из вас есть другой лучший способ. Ну, я надеюсь, вы поняли, что я хочу сказать .. Мой английский не самый лучший ..

Спасибо за вашу помощь :)

------------ --------- UPDATE: -------------------

решаемые Код:

$dauer_result = array('<30'=>0, '30-120'=>0, '120-300'=>0, '300-900'=>0, '900-1800'=>0, '1800-3600'=>0, '>3600'=>0); 
     foreach ($visit_lenght as $lenght) { 
      switch ($lenght) { 
       case $lenght < 30: 
        $dauer_result['<30'] +=1 ; 
        continue; 
       case $lenght > 30 and $lenght < 120: 
        $dauer_result['30-120'] +=1 ; 
        continue; 
       case $lenght > 120 and $lenght < 300: 
        $dauer_result['120-300'] +=1 ; 
        continue; 
       case $lenght > 300 and $lenght < 900: 
        $dauer_result['300-900'] +=1 ; 
        continue; 
       case $lenght > 900 and $lenght < 1800: 
        $dauer_result['900-1800'] +=1 ; 
        continue; 
       case $lenght > 1800 and $lenght < 3600: 
        $dauer_result['1800-3600'] +=1 ; 
        continue; 
       case $lenght 3600: 
        $dauer_result['>3600'] +=1 ; 
        continue; 
      } 
     } 

ответ

1

Я думаю, что вы ищете

$dauer_result = array('<30'=>0, '30-120'=>0, '120-300'=>0, '300-900'=>0, '900-1800'=>0, '1800-3600'=>0, '>3600'=>0); 
     foreach ($visit_lenght as $lenght) { 
      switch ($lenght) { 
       case $lenght < 30: 
        $dauer_result['<30'] +=1 ; 
        continue; 
       case $lenght > 30 and $lenght < 120: 
        $dauer_result['30-120'] +=1 ; 
        continue; 
       case $lenght > 120 and $lenght < 300: 
        $dauer_result['120-300'] +=1 ; 
        continue; 
       case $lenght > 300 and $lenght < 900: 
        $dauer_result['300-900'] +=1 ; 
        continue; 
       case $lenght > 900 and $lenght < 1800: 
        $dauer_result['900-1800'] +=1 ; 
        continue; 
       case $lenght > 1800 and $lenght < 3600: 
        $dauer_result['1800-3600'] +=1 ; 
        continue; 
       case $lenght 3600: 
        $dauer_result['>3600'] +=1 ; 
        continue; 
      } 
     } 
+0

Just Perfect !!!! Большое спасибо ! – ItzMe42

0

Это легко может быть сделано используя array_filter, который использует настраиваемую функцию для фильтрации значений из вашего массива. Пример ниже:

$visit_length = array(3636, 3637, 3, 40, 9); 

function length_filter($var) 
{ 
    return ($var > 3600); 
} 

$result = array_filter($visit_length, 'length_filter'); 

Переменная $result теперь занимает массив, который содержит только значения, которые выше, чем 3600.

+0

ну и если мне это нужно для многих случаев? как между 0-30 секундами, 30-60seconds ....? – ItzMe42

+0

О, я просто перечитываю ваш вопрос сейчас, и теперь я его получаю. Вы должны просто изменить порядок своих корпусов коммутаторов. Просто поставьте свой случай $ lenght> 3600: 'case first. – Rein

+0

Я думал, может быть, я могу использовать некоторые индексы в моем массиве. Как $ dauer_result ['0.30'] = 2 --- $ dauer_result ['30 -60 '] = 0 ... или что-то вроде этого – ItzMe42

Смежные вопросы