Ben bu "0011100001100111" gibi bir dize var, ve i 111, (00 her dizinin uzunluğunu bilmek istiyorum, {[(3)] olur }, 11, 00, 111) doğru sırayla.
PHP bunu nasıl yapabilirim?
Bana yardım edecek kim teşekkürler.
Tüm dize aracılığıyla döngüsü döngü oluşturmak. Bu dizedeki her karakterin bakmak ve önceki karaktere karşılaştırmak istiyorsunuz. Aynı ise, o zaman farklı ise, bir dizi üzerine sayaç değerine basılır ve sayacı temizler, bir karşı arttırır.
Denenmemiş kodu:
function countSequenceLengths($str){
$counter = 1;
$lastChar = $str[0];
$ret = array();
for($i=1; $i<=strlen($str); $i++){
if($i<strlen($str) && $str[$i] == $lastChar){
$counter++;
}else{
$ret[] = $counter;
$counter = 1;
$lastChar = $str[$i];
}
}
return $ret;
}
Ben sizin yardımınızla, yapılan kod:
$string = "1111100111111001111110011111100111111001111... ...10011111100111111001";
$str = substr($string, 10, 12);
echo "str = '".$str."'<br />";
$array = array_slice(preg_split('/(?<=(.))(?!\\1)/', $str), 0, -1);
for($i=0; $i<count($array); $i++){
echo "array[".$i."] = '".$array[$i]."', ";
echo "array[".$i."] length = '".strlen($array[$i])."'<br />";
}
bana gerekli değerleri döndürür:
str = '111001111110'
dizi [0] = '111', array [0] uzunluk = '3'
dizi [1] = '00', array [1] uzunluk = '2'
dizi [2] = '111111', array [2] uzunluk = '6'
dizi [3] = '0', array [3] uzunluk = '1'
Thanks a lot!