undefinied offset 1

0

Mam taki problem pisze sobie prosty skrypt i nagle jest ostrzeżenie, że mam nie zdefiniowany offeset czyli nie zdefiniowaną wartość o czy 1 już nie wiem, i to do tyczy tej linijki dam komentarz w kodzie.

 porownaj_cale_zdanie("prolog tomek był jabłko pomarańcza");
function porownaj_cale_zdanie($zdanie) {
  global $baza;
  //usun_spacje($string);
  //$zdanie2 = explode(" ",$zdanie);
  //while ($i < count($zdanie2)) {
    
    //$i++;
  //}
  $tablica = array();
  $tablica2 = array();
  //$i = 0;
  $zdanie2 = explode(" ",$zdanie);
  $z = 0;
  $i = 0;
  while ($i < count($zdanie2) ) {
  //print "dupa";
  //print $i;
  $j = 0;
  
  $i2 = 0;
  $stringi3 = $baza->query("select text from ciagi_znakow where text != ''");
  $zdanie3[$i2] = usun_spacje($zdanie2[$i2]);
  while ($string4 = mysqli_fetch_array($stringi3) ) {
  //print "kupa";
  
    $tablica[$i2] = explode(" ",$string4['text']);
      $j = 0;
      //print $i2 . "<br>";
	//$i2 =0;
      while ($j < count($tablica[$i2]) ) {
	$tablica[$i2][$j] = usun_spacje($tablica[$i2][$j]);
	//print $j . "<br>";
	//print $tablica[$i2][$j] . "<br>";
	//print $tablica[$i2][$j];
	//$liczba[$z] = porownaj($zdanie3[$i],$tablica[$i2][$j]);
	print $zdanie3[$i2] . "$i<br>"; //chodzi o tą linijkę próbowałem też ze zmienną $i
	$j++;
	//print $z . "<br>";
	$z++;
      }
    //print $i2;
    $i2++;
    
  }
  //print $i;
  $i++;
  }
  /*
  
  while ($i < count($zdanie2) ) {
  $j = 0;
  //print $zdanie2[$i];
  $stringi = $baza->query("select tekst from ciagi_znakow");
  while ($stringi2 = mysqli_fetch_array($stringi)) {
  
    //$ile = porownaj($text,$stringi2[0]);
    //print "ile";
      //print "karol";
	
  
    
      $zdanie3[$j] = usun_spacje($zdanie2[$i]);
      //print $zdanie3[$i] . " "  . $stringi2[0];  

      //print $tablica2[$j];
      //print $tablica2[$i] . "<br>";
      $j++;
    }
    rsort($tablica);
    $tablica2[$i] = $tablica[0];
    //print $tablica2[0] . "<br>";
    
    $i++;
    
  
  }
  //var_dump($tablica2);
  
  
  */
}


function usun_spacje($string) {
  
  
  $string2 = str_replace(" ","",$string);
  return $string2;
  
  
}
2
$i2 = 0;
$zdanie3[$i2] = usun_spacje($zdanie2[$i2]);
while ($string4 = mysqli_fetch_array($stringi3) ) 
{
	print $zdanie3[$i2] . "$i<br>"
	$i2++;
}

Przypisujesz do zmiennej $zdanie3[0] zdanie z usuniętymi spacjami, a potem próbujesz się odwołać do indeksu 1, który nie istnieje.

No i tak btw. skąd masz pewność że $string4 ma dokładnie taką samą ilość elementów jak $zdanie3? To jest proszenie się o wyjście poza zakres tablicy i odwołanie do nieistniejących indeksów (tak jak w tym przypadku).

0
mefsh napisał(a):
$i2 = 0;
$zdanie3[$i2] = usun_spacje($zdanie2[$i2]);
while ($string4 = mysqli_fetch_array($stringi3) ) 
{
	print $zdanie3[$i2] . "$i<br>"
	$i2++;
}

No teraz mam pewność, że wszytko działa wystarczyło
dopisanie czegoś takiego

	if (isset($zdanie3[$i2]) and isset($tablica[$i2][$j])) {
	$liczba[$z] = porownaj($zdanie3[$i2],$tablica[$i2][$j]);
	print "<br>" . $liczba[$z] . "<br>";
	}

Aż wstyd że sam na to nie wpadłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1