2014-11-19 2 views
0

Я использую эту функцию, чтобы получить все возможные подстроки $ input = "KRKRK". iT выдает некоторые подстроки, но не учитывает первое слово строки (т. Е. K) при создании подстрок. В чем может быть проблема?все возможные подстроки php

function get_all_substrings($input) 
{ 
    $input = trim($input); 
    $subs = array(); 
    $length = strlen($input); 
    for($i=1; $i<=$length; $i++) 
{ 
    $start = 0; 
    $sub_length = $i; 

    while(($start+$sub_length) <= $length) 
    { 
    $subs[] = substr($input, $start, $sub_length); 
    $start++; 
    } 

} 
return $subs; 
} 

Вот массив Выход:

Array ([0] => R [1] => K [2] => R [3] => K [4] => RK [5] => KR [6] => RK [7] => RKR [8] => KRK [9] => RKRK) 

Но почему я не получаю подстроки K, KR, КРК, KRKR ??

+1

Try 'для ($ I = 0; $ я <$ длины; $ я ++) '... –

+0

Я попробовал .. не работает ... Даже проверил другие функции здесь .. не получили необходимый выход. любой PHP-код, который может работать для меня ?? – user3776467

+0

Возможный дубликат, https://stackoverflow.com/questions/2099732/how-to-find-all-substrings-of-a-string-in-php – bSaraogi

ответ

1

Вот что я взбитый -

function get_all_subs($input) { 
    $arr = str_split($input); 
    $all_subs = array(); 
    for ($i = 0; $i < count($arr); $i++) { 
     for ($j = $i; $j < count($arr); $j++) { 
      $all_subs[] = implode('', array_slice($arr, $i, $j - $i + 1)); 
     }  
    } 
    return $all_subs; 
} 

$input="KRKRK"; 
$substrings = get_all_subs($input); 
print_r($substrings); 

Вот рабочий example.

+0

Вы понимаете, что 'зиЬзЬг (х, у , 0) 'вернет emptystring? –

+0

я. OP, возможно, придется реорганизовать свой код после его изменения. @Cobra_Fast –

+0

Array ([0] => [1] => [2] => [3] => [4] => [5] => R [ 6] => K [7] => R [8] => K [9] => RK [10] => KR [11] => RK [12] => RKR [13] => KRK [14] => RKRK) Я получаю это как вывод – user3776467

0

я честно не было никаких проблем с помощью сценария, когда я побежал ...

<?php 

function get_all_substrings($input) 
{ 
    $input = trim($input); 
    $subs = array(); 
    $length = strlen($input); 
    for($i=1; $i<=$length; $i++) 
    { 
     $start = 0; 
     $sub_length = $i; 
     while(($start+$sub_length) <= $length) 
     { 
      $subs[] = substr($input, $start, $sub_length); 
      $start++; 
     } 
    } 
    return $subs; 
} 

print_r(get_all_substrings("KRKRK")); 

?> 

Это дало мне результат:

Array ([0] => K [1] => R [2] => K [3] => R [4] => K [5] => KR [6] => RK [7] => KR [8] => RK [9] => KRK [10] => RKR [11] => KRK [12] => KRKR [13] => RKRK [14] => KRKRK) 
+0

Спасибо, помощник !! попробуем это – user3776467

+0

@ user3776467 Это не сработало, потому что это дало результат, кажется, вы просили ??? Я просто собираюсь угадать, что это связано с фактическим аргументом, который вы даете этой функции ... –

0

Попробуйте это! это даст результат, как Array ([0] => K [1] => KR [2] => KRK [3] => KRKR [4] => KRKRK)

$input="KRKRK"; 
function get_all_substrings($input) 
{ 
    for($i=0; $i<strlen($input); $i++){ 
     $individual_char[] = $input[$i]; 
    } 
    $temp_char = ""; 
    for($i=0; $i<count($individual_char); $i++){ 
     $final_array[] = $temp_char.$individual_char[$i]; 
     $temp_char = $temp_char.$individual_char[$i]; 
    } 
    return $final_array; 
} 
print_r(get_all_substrings($input)); 
Смежные вопросы