2016-05-14 3 views
-4

я получил строку, как это:PHP: Граф различных чисел в строке

, 10,10,10,10,10,10,10,11

Как я могу рассчитывать, как там много разных чисел?

+1

Пожалуйста, прочтите [Какие темы я могу спросить о] (http://stackoverflow.com/help/on-topic) и [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) И [идеальный вопрос] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) SO is ** не является бесплатным кодированием или преобразование кода или учебник или поиск в библиотеке ** Вы также должны показать, что приложили определенные усилия для решения своей проблемы. Действительно ли строка начинается с запятой. что ты уже испробовал? – RiggsFolly

+0

да это начинается с запятой – DragonStyle

ответ

0
//remove the starting from the given string, 
$input = substr($input, strpos(',', $input) + 1); 

//split the string on ',' and put it in an array 
$numbers = explode(',', $input); 

//an array to put our unique numbers in 
$counter = array(); 
//for each number 
foreach($numbers as $number) { 
    //check if it is not in the unique 'counter' array 
    if(!in_array($number, $counter)) { 
    //remember this unique number 
    $counter[] = $number; 
    } 
} 

//count the unique number array 
$different = count($counter); 
//give some output 
echo "There are " . $different . " unique numbers in the given string"; 

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

+0

Спасибо. Это сработало. btw: Не подстрока. Это «substr». Но с этим это сработало. – DragonStyle

+0

Я отредактирую его в своем посте, без проблем –

+0

Святое чрезмерное применение, Бэтмен! – j4k3

-1

попробовать что-то вроде этого:

$string = '10, 10, 11, 11, 11, 12'; 

$numbers = explode(',',$string); 
$counter = array(); 
foreach($numbers as $num) { 
    $num = trim($num); 
    if (!empty($num)) { 
     if (!isset($counter[$num])) { 
     $counter[$num]=1; 
     } else { 
     $counter[$num]++; 
     } 
    } 
} 

print_r($counter); 

Надеется, что это поможет!

0

Вы можете использовать функцию взрываются для изготовления string Массив затем использовать array_unique функция для получения уникального номера. Из этого массива массивов вы можете легко подсчитать, сколько из вашего числа уникально.

$str = ",10,10,10,10,10,10,10,11"; 

$arr = explode(",", trim($str, ",")); 

$arr = array_unique($arr); 

print_r($arr); 

Результат:

Array 
(
    [0] => 10 
    [7] => 11 
) 

так что теперь пришло время подсчитать, просто использовать count.

echo count($arr);// 2 
0
  1. explodestring на ,
  2. array_filter без обратного вызова, чтобы удалить пустые матчи (первой запятой)
  3. array_unique для удаления DUP значения
  4. count вернуть размер array_unique

$string = ",10,10,10,10,10,10,10,11"; 
echo count(array_unique(array_filter(explode(",", $string)))); 
+0

Ухаживать за DV? –

+1

Он этого не делает. Я отклонил этот вопрос о задании домашних заданий и поддержал ваш ответ. Самый простой и эффективный здесь. - Я лично использовал array_map (intval, ...) вместо array_filter (...). – j4k3

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