Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funkcja sprawdzająca, czy dana wartość istnieje w którymś z pól tablicy.
Forum PHP.pl > Forum > Przedszkole
hyhyhy
Być może jestem przemęczony, ale nie potrafię zrobić skutecznej funkcji, która przeszukując tablicę sprawdza, czy podany element istnieje już w tablicy, szczerze mówiąc od samego początku miałem z tym problem, a teraz jest mi to potrzebne i nie mogę tego obejść smile.gif Próbowałem już zamiast tego śmiesznego $spr dać break;return false/true; ale nie działało kompletnie.
A w stanie obecnym działa dla pierwszego, albo kilku pierwszych rekordów, a później uparcie twierdzi, że szukanego elementu nie ma w tabeli smile.gif
Bardzo proszę o pomoc, chociaż podejrzewam, że błąd jest elementarny to - cóż - wpaść na niego nie mogę

  1. private function czyIstnieje($id){
  2. for ($i=0;$i<count($_SESSION["koszyk"]);$i++){
  3. if ($id == $_SESSION["koszyk"][$i]['id']){
  4. $spr += 1;
  5.  
  6. }
  7. if ($spr > 0){
  8. return true;//ISTNIEJE
  9.  
  10. }else{
  11.  
  12. return false; //NIE ISTNIEJE
  13. }
  14. }
  15. }
Rid
Nie wiem,jak Pan ma zapisane dane do sesji,jeśli są separatory typu "," lub jakiś inny to można by wyciągnąć dane z
sesji za pomocą separatorów i przypisać do tablicy(array),a później zacząć przeszukiwanie tablicy.
Fifi209
array_search?
hyhyhy
właśnie kombinuję z tym, ale teraz jest tak, że zawsze zwraca mi true

Może tak podam więcej szczegółów: mam tabelę $_SESSION['koszyk'][$i], która zawiera dwa indeksy ['id'] i ['ilosc']
i jeżeli jest już w którymś z pół ['id'] dany numer, to ma go nie dodawać.

  1. private function czyIstnieje($id){
  2. if(array_search($id, $_SESSION['koszyk']) == true){
  3. return true; //znaleziono
  4. }else{
  5. return false; //nie znaleziono
  6. }
  7. }
  8.  
  9. public function dodaj(){
  10. if ($this->czyIstnieje($this->id) == false){
  11. $ile = count($_SESSION["koszyk"]);
  12. $_SESSION["koszyk"][$ile] = array();
  13. $_SESSION["koszyk"][$ile]['id'] = $this->id;
  14. $_SESSION["koszyk"][$ile]['ilosc'] = 1; //domyślnie 1 sztuka na poczatek
  15.  
  16. }
  17. }
user767
  1. <?php
  2. $owoce = array('1' => 'jablko', '2' => 'banan', '3' => 'truskawka', '4' => '');
  3. trim($owoce);
  4.  
  5. //print_r($owoce);
  6. //var_dump($owoce);
  7.  
  8. if(empty($owoce[4])) {
  9. echo "pusta";
  10. }
  11. else {
  12. echo "nie pusta";
  13. }
  14.  
  15. ?>
Fifi209
Bo źle to rozplanowałeś, jako klucz tablicy dawaj id przedmiotu i tam dopisuj potem jako wartość ilość.

Wtedy użyjesz array_key_exists
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.