Я использую эту функцию, чтобы получить все возможные подстроки $ 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;
}
Вот выходной массив:
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 ??
Вот что я подхватил —
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);
Вот рабочая пример.
У меня, честно говоря, не было проблем с использованием скрипта, когда я его запускал …
<?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 )
Попробуй это! это даст результат как 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));