Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Dodawanie nowych danych do tablicy a wskaźnik tablicy, czyli, ja zacząć od 1 a nie od 0
tryme
post 27.01.2009, 22:20:43
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.12.2005

Ostrzeżenie: (0%)
-----


Witam,

Mam tablicę z której usuwam wszystkie pozycje pojedynczo za pomocą unset($tablica[$nr]).

Co zrobić aby dodając dane do pustej tablicy za pomocą array_push wystartować od wskaźnika tablicy 1 a nie 0?

Dziękuję za pomoc.
Go to the top of the page
+Quote Post
erix
post 27.01.2009, 22:28:18
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Mam tablicę z której usuwam wszystkie pozycje pojedynczo za pomocą unset($tablica[$nr]).

A nie lepiej:
  1. <?php
  2. $x = array(null);
  3. $x[] = 'wartosc o indeksie 1';
  4. ?>


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
tryme
post 27.01.2009, 23:06:27
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.12.2005

Ostrzeżenie: (0%)
-----


Ok, tylko ja chciałbym usuwać wybrane przez siebie pozycje z tablicy pojedynczo a nie wszystkie naraz (raz dodaję, raz usuwam ... chwilowo nie ma nic, potem znów coś dodaję itd.).

Poza tym w twoim rozwiązaniu jest pozycja nr 0 tylko, że pusta.
Go to the top of the page
+Quote Post
EarthCitizen
post 27.01.2009, 23:08:49
Post #4





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

Ostrzeżenie: (0%)
-----


To może
  1. <?php
  2. $a[1] = 'wartość';
  3. ?>
Go to the top of the page
+Quote Post
blooregard
post 28.01.2009, 00:25:19
Post #5


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




To, co chcesz osiągnąć, podchodzi mi pod listę (taki algorytm).
Może Ci się przyda:

  1. <?php
  2. /**
  3.  * Klasa implementujaca algorytm listy
  4.  *
  5.  * @author blooregard
  6.  * @package algorithms
  7.  * @version 1.0
  8.  *
  9.  */
  10.  
  11. class Lista {
  12.  
  13.    /**
  14.      * tablica elementow listy
  15.      * @param integer
  16.      */
  17.    private $elements = array();
  18.  
  19.    /**
  20.      * konstruktor
  21.      */
  22.    public function __construct() {
  23.  
  24.    }//__construct()
  25.  
  26.    /**
  27.      * konwersja obiektu Lista do string
  28.      *
  29.      * @return object serializowany obiekt klasy Lista
  30.      */
  31.    public function __toString() {
  32.        return serialize($this);
  33.    }//
  34.    
  35.    /**
  36.      * wstawia element na podana pozycje w liscie
  37.      *
  38.      * Po wstawieniu rozmiar listy zwiekszany jest o jeden.
  39.      * Jesli wskazana pozycja jest ujemna lub wieksza od aktualnego rozmiaru listy,
  40.      * zwracany jest FALSE
  41.      *
  42.      * @param integer pozycja listy, n ktorej ma byc wstawiony element
  43.      * @param mixed wartosc do wstawienia
  44.      *
  45.      */
  46.    public function insert($element , $value) {
  47.        if ((integer)$element < 0 || (integer)$element > $this->size() || empty($value)) return false;
  48.        $i = 0;
  49.        $result_array = array();
  50.  
  51.        foreach ($this->elements as $current) {
  52.            if ($i == $element) {
  53.                $result_array[] = $value;
  54.            }//if
  55.            $result_array[] = $current;
  56.            $i++;
  57.        }//foreach
  58.  
  59.        $this->elements = (array)$result_array;
  60.    }//insert()
  61.  
  62.    /**
  63.      * dodaje element na koncu listy
  64.      *
  65.      * @param mixed wartosc do wstawienia
  66.      */
  67.    public function add($value) {
  68.        if (empty($value)) return false;
  69.        $this->elements[] = $value;
  70.    }//add()
  71.  
  72.    
  73.    /**
  74.      * usuwa element listy o podanym indeksie
  75.      *
  76.      * Romiar listy zostaje zmniejszony o 1. Jesli wskazana pozycja
  77.      * jest ujemna badz wykracza poza liste, zwracany jest FALSE
  78.      *
  79.      * @param integer indeks elementu do usuniecia z listy
  80.      */
  81.    public function delete($element) {
  82.        if ($element < 0 || $element > $this->size()) return false;
  83.        foreach ($this->elements as $current) {
  84.            if (!($i == $element)) {
  85.                $result_array[] = $current;
  86.            }//if
  87.            $i++;
  88.        }//foreach
  89.  
  90.        $this->elements = (array)$result_array;
  91.    }//delete()
  92.  
  93.    /**
  94.      * zwraca podany element listy
  95.      *
  96.      * Jesli wskazana pozycja jest ujemna lub wieksza od aktualnego rozmiaru listy,
  97.      * zwracany jest FALSE
  98.      *
  99.      * @param integer indeks elementu do pobrania
  100.      *
  101.      */
  102.    public function get($element) {
  103.        if ($element < 0 || $element > $this->size()) return false;
  104.        return ($this->elements[$element]);
  105.    }//get()
  106.  
  107.  
  108.    /**
  109.      * ustawia wartosc podanego elemenu listy
  110.      *
  111.      * Jesli wskazana pozycja jest ujemna lub wieksza od aktualnego rozmiaru listy,
  112.      * zwracany jest FALSE
  113.      *
  114.      * @param integer indeks elementu do ustawienia
  115.      * @param mixed wartosc
  116.      */
  117.    public function set($element ,$value) {
  118.        if ($element < 0 || $element > $this->size()) return false;
  119.        $this->elements[$element] = $value;
  120.    }//get()
  121.  
  122.  
  123.    /**
  124.      * zwraca pozycje podanej wartosci w liscie
  125.      *
  126.      * Jesli podana wartosc istnieje w liscie, zwraca indeks elementu
  127.      *
  128.      * @param mixed szukana wartosc
  129.      */
  130.    public function indexOf($value) {
  131.        if (empty($value)) return false;
  132.  
  133.        $i = 0;
  134.        foreach($this->elements as $current) {
  135.            if ($current == $value) return $i;
  136.            $i++;
  137.        }//foreach
  138.        return false;
  139.    }//indexOf()
  140.    
  141.  
  142.    /**
  143.      * zwraca aktualny rozmiar listy
  144.      */
  145.    public function size() {
  146.        return count($this->elements);
  147.    }//size()
  148.  
  149.    /**
  150.      * wyswietla liste
  151.      */
  152.    public function show() {
  153.        $i = 0;
  154.        for ($i; $i < $this->size(); $i++) {
  155.            echo '<br />element '.$i.' : '.$this->elements[$i];
  156.        }//for
  157.    }//show()
  158.  
  159.  
  160.    /**
  161.      *  wykorzystany algorytm: sortowanie babelkowe
  162.      * liczba przebiegow "przestawiania" rowna jest ilosci elementow listy-1,
  163.      * czyli zlozonosc algorytmu to
  164.      * O(N*N)
  165.      *  gdzie N - ilosc elementow listy (zlozonosc kwadratowa):
  166.      *
  167.      *
  168.      * @param object $this
  169.      */
  170.    public function bubblesort() {
  171.        $temp = NULL;
  172.  
  173.        //zewn. petla - powtarzana tyle razy, ile jest elementow listy
  174.        for ($y = 0; $y < $this->size(); $y++) {
  175.            //wewn. petla - dla kazdej pary dokonuje porownania i zamienia miejscami elementy
  176.            // $i oraz $i+1, jesli $i > $i+1
  177.            for ($i = 0; $i < $this->size()-1; $i++) {
  178.                if ( $this->get($i) > $this->get($i+1) ) {
  179.                    $temp = $this->get($i);
  180.                    $this->set($i , $this->get($i+1));
  181.                    $this->set($i+1 , $temp);
  182.                }//if
  183.            }//for
  184.        }//for
  185.    }//bubblesort()
  186.  
  187.    
  188. }// class Lista
  189.  
  190.  
  191. //test listy
  192. $lista = new Lista();
  193.  
  194.  
  195. $lista->add(6);
  196. $lista->add(2);
  197. $lista->add(3);
  198. $lista->add(1);
  199. $lista->add(5);
  200. $lista->add(8);
  201. $lista->add(7);
  202.  
  203. $lista->show();
  204. $lista->bubblesort();
  205.  
  206. echo '<br /><br />po posortowaniu: ';
  207. $lista->show();
  208. ?>


Ten post edytował blooregard 28.01.2009, 13:28:01


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
tryme
post 28.01.2009, 09:24:28
Post #6





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.12.2005

Ostrzeżenie: (0%)
-----


Już rozwiązałem swój problem w następujący sposób

  1. <?php
  2. if (count($tablica) == 0)
  3.        $tablica[1] = array('coś tam coś tam']);
  4.    else
  5.        array_push($tablica, array('array('coś tam coś tam]));
  6. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 01:37