Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: array
Forum PHP.pl > Forum > PHP
uczeń php
mam dziwny blad
array(9) { [0]=> string(5) "tekst" [1]=> string(3) "img" [2]=> string(5) "tekst" [3]=> string(3) "img" [4]=> string(3) "img" [5]=> string(5) "tekst" [6]=> string(3) "img" [7]=> string(5) "tekst" [8]=> string(3) "img" }
Notice: Undefined offset: 13 in C:\Documents and Settings\Jacek\Desktop\projekt\wirtualne_pliki\algo_test.php on line 8

Array
(
[0] => tekst
[1] => Nowa linia
[2] => img
[3] => Nowa linia
[4] => tekst
[5] => Nowa linia
[6] => img
[7] => img
[8] => Nowa linia
[9] => tekst
[10] => Nowa linia
[11] => img
[12] => Nowa linia
[14] => Nowa linia
[13] => tekst
[15] => img
[16] =>
)

Dlaczego indeksu [13] i [14] zamienione sa miejscami ?
a oto kawalek kodu
  1. <?php
  2. $pieces_of_text = array ("tekst","img","tekst","img","img","tekst","img","tekst","img");
  3. $size = count($pieces_of_text)-1;
  4. var_dump($pieces_of_text);
  5. for($i=count($pieces_of_text)-1; $i>0; $i--){
  6. if($pieces_of_text[$i]!=$pieces_of_text[$i-1]){
  7. for($j=$size+($size-$i); $j>=$i; $j--){
  8. $pieces_of_text[$j+1] = $pieces_of_text[$j];
  9.  
  10.  
  11. }
  12. $pieces_of_text[$i] = 'Nowa linia';
  13. }
  14. }
  15.  
  16. echo '<pre>';
  17. print_r($pieces_of_text);
  18. echo '</pre>';
  19. ?>
JoShiMa
a indeksy są typu int czy string?
LowiczakPL
poprawny i zoptymalizowany kod

  1. <?php
  2. $pieces_of_text = array ("tekst","img","tekst","img","img","tekst","img","tekst","img");
  3. $size = count($pieces_of_text)-1;
  4. var_dump($pieces_of_text);
  5.  
  6. for($i=$size; $i>0; $i--){
  7. if((isset($pieces_of_text[$i]) && isset($pieces_of_text[$i-1]))&& $pieces_of_text[$i]!=$pieces_of_text[$i-1]){
  8. for($j=$size+($size-$i); $j>=$i; $j--){
  9. $pieces_of_text[$j+1] = $pieces_of_text[$i];
  10. }
  11. $pieces_of_text[$i] = 'Nowa linia';
  12. }
  13. }
  14.  
  15. echo '<pre>';
  16. print_r($pieces_of_text);
  17. echo '</pre>';
  18. ?>
uczeń php
Chciałbym wstawić 'Nowa linia' pomiędzy "tekst" i "img" sad.gif - Czy przetestowałeś choć raz działanie algorytmu ? Ps z tego co zuwazylem indeksy są dalej przestawione.
JoShiMa
Cytat(uczeń php @ 17.06.2016, 17:12:02 ) *
Chciałbym wstawić 'Nowa linia' pomiędzy "tekst" i "img" sad.gif


W takim razie zabrałeś się do tego od dupy strony. Nie wstawiaj tych pustych linii do tablicy, która już jest bo własnie dostajesz taki efekt. Lecisz pętlą po tablicy $pieces_of_text na przykład pętlą foreach. Czytasz bieżący element i np poprzedni (sprawdzasz czy istnieje bo Ci się na pierwszym elemencie wyłoży). Jeśli bieżacy jest <img> a poprzedni "tekst' to kopiujesz dane do nowej tablicy tak:
$new_pieces_of_text[] = 'nowa linia'
$new_pieces_of_text[] = bieżący element

W przeciwnym wypadku tylko
$new_pieces_of_text[] = bieżący element

Na koniec nadpisujesz tablicę $pieces_of_text tą nową tablica i po sprawie.
LowiczakPL
o to chodziło

Kod
array (size=18)
  0 => string 'tekst' (length=5)
  1 => string 'Nowa linia' (length=10)
  2 => string 'img' (length=3)
  3 => string 'Nowa linia' (length=10)
  4 => string 'tekst' (length=5)
  5 => string 'Nowa linia' (length=10)
  6 => string 'img' (length=3)
  7 => string 'Nowa linia' (length=10)
  8 => string 'img' (length=3)
  9 => string 'Nowa linia' (length=10)
  10 => string 'tekst' (length=5)
  11 => string 'Nowa linia' (length=10)
  12 => string 'img' (length=3)
  13 => string 'Nowa linia' (length=10)
  14 => string 'tekst' (length=5)
  15 => string 'Nowa linia' (length=10)
  16 => string 'img' (length=3)
  17 => string 'Nowa linia' (length=10)


  1. <?php
  2.  
  3. $pieces_of_text = array ("tekst","img","tekst","img","img","tekst","img","tekst","img");
  4. $size = count($pieces_of_text)-1;
  5. var_dump($pieces_of_text);
  6.  
  7. $nowaTablica = array();
  8.  
  9. foreach($pieces_of_text as $val) {
  10. $nowaTablica[] = $val;
  11. $nowaTablica[]= 'Nowa linia';
  12. }
  13. var_dump($nowaTablica);
uczeń php
Dzięki
LowiczakPL
Czy coś jeszcze za Ciebie napisać oneeyedsmiley02.png

  1. <?php
  2.  
  3. $pieces_of_text = array ("tekst","img","tekst","img","img","tekst","img","tekst","img");
  4. $size = count($pieces_of_text)-1;
  5. var_dump($pieces_of_text);
  6.  
  7. $nowaTablica = array();
  8.  
  9. foreach($pieces_of_text as $key => $val) {
  10. $nowaTablica[] = $val;
  11. if (isset($pieces_of_text[$key+1]) && $pieces_of_text[$key+1]!=$val) {
  12. $nowaTablica[]= 'Nowa linia';
  13. }
  14.  
  15. }
  16. var_dump($nowaTablica);
  17.  
JoShiMa
Cytat(LowiczakPL @ 17.06.2016, 20:42:35 ) *
Czy coś jeszcze za Ciebie napisać oneeyedsmiley02.png


Czy uważasz, że ktokolwiek czegokolwiek się od Ciebie nauczy jak będziesz za niego pisac kod? tongue.gif

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.