все возможные подстроки php

0

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

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;
}

Здесь массив Output:

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

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

  • 1
    Попробуйте for($i=0; $i<$length; $i++) ...
  • 0
    Я попробовал это ... не сработало ... Даже проверил другие функции здесь ... не получил нужный вывод. любой код PHP, который может работать для меня ??
Показать ещё 1 комментарий
Теги:
substring

3 ответа

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);

Вот рабочий пример.

  • 0
    Вы понимаете, что substr(x, y, 0) вернет emptystring?
  • 0
    Я делаю. Оператору, возможно, придется реорганизовать свой код, как только он внесет это изменение @Cobra_Fast
Показать ещё 4 комментария
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));
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
    Спасибо друг!! попробую
  • 0
    @ user3776467 Разве это не сработало, потому что это дало результат, который вы, кажется, просили ??? Я просто собираюсь догадаться, что это связано с фактическим аргументом, который вы даете функции ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню