Bir dize her dizinin uzunluğunu bilmek

3 Cevap php

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.

3 Cevap

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

Bunu yapmak için normal bir ifade kullanabilirsiniz:

preg_split('/(?<=(.))(?!\\1)/', $str)

Burada sadece kaldırmak gerekir ucunda bir ek boş bir dize alıyoruz:

array_slice(preg_split('/(?<=(.))(?!\\1)/', $str), 0, -1)

Ben sizin yardımınızla, yapılan kod:

$string = "1111100111111001111110011111100111111001111... ...10011111100111111001";

$str = substr($string, 10, 12);

echo "str = '".$str."'&lt;br /&gt;";

$array = array_slice(preg_split('/(?<=(.))(?!\\1)/', $str), 0, -1);

for($i=0; $i&lt;count($array); $i++){

   echo "array[".$i."] = '".$array[$i]."', ";

   echo "array[".$i."] length = '".strlen($array[$i])."'&lt;br /&gt;";

}

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!