Przeszukiwanie tablicy w php

Dla rozpoczynających przygodę z programowaniem i językiem PHP.
Awatar użytkownika
northwest
Posty: 1
Rejestracja: 11 lip 2015, 22:07

Przeszukiwanie tablicy w php

Post autor: northwest » 11 lip 2015, 22:13

Witam serdecznie,
Mam taką tablicę:

Kod: Zaznacz cały

array(2) {
  [0]=>
  array(11) {
    ["id"]=>
    string(1) "2"
    ["nazwa"]=>
    string(5) "nazwa"
    ["cena"]=>
    string(6) "100.00"
    ["ilosc"]=>
    int(4)
    ["maxilosc"]=>
    string(3) "444"
    ["dostawa"]=>
    string(4) "5.00"
    ["vat"]=>
    string(2) "23"
    ["stanproduktu"]=>
    string(1) "1"
    ["aj_nazwa"]=>
    string(9) "niebieski"
    ["aj_rozmiarX"]=>
    string(3) "127"
    ["aj_rozmiar_wielkosc_X"]=>
    string(1) "3"
  }
  [1]=>
  array(11) {
    ["id"]=>
    string(1) "4"
    ["nazwa"]=>
    string(6) "nazwa1"
    ["cena"]=>
    string(6) "106.00"
    ["ilosc"]=>
    string(1) "1"
    ["maxilosc"]=>
    string(1) "9"
    ["dostawa"]=>
    string(4) "0.00"
    ["vat"]=>
    string(1) "0"
    ["stanproduktu"]=>
    string(1) "1"
    ["aj_nazwa"]=>
    string(8) "czerwony"
    ["aj_rozmiarX"]=>
    string(3) "136"
    ["aj_rozmiar_wielkosc_X"]=>
    string(1) "1"
  }
}
i kod:

Kod: Zaznacz cały


function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;
        if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}
 
$dubel = recursive_array_search($_POST['itemid'], $_SESSION['koszykzamowien']);
 
        if($dubel === FALSE){
            $_SESSION['koszykzamowien'][] = array('id' =>($_POST['itemid']), 'nazwa' =>($_POST['i_nazwa']), 'cena' =>($_POST['i_cena']), 'ilosc' =>($_POST['ilosc']), 'aj_rozmiarX' =>($_POST['aj_rozmiarX']), 'aj_rozmiarX' =>($_POST['aj_rozmiar_wielkosc_X']));
        } else{
            echo "DUBEL!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
            $_SESSION['koszykzamowien'][$dubel]['ilosc'] = 2;
        }

Funkcja recursive_array_search - funkcja wyszukuje duplikaty dla ID - i działa poprawnie.
Chciałbym ją przerobić tak, żeby wyszukiwała duplikaty po 3 kolumnach:
- id
- aj_nazwa
- aj_rozmiar_wielkosc_X

Próbowałem to przerobić tak:

Kod: Zaznacz cały

function recursive_array_search($needle, $haystack, $where1, $where2) {
    foreach($haystack as $key => $value) {
        $current_key=$key;
        // $where1 = aj_nazwa
        // $where2 = aj_rozmiar_wielkosc_X
        if($needle===$value OR ((is_array($value) && recursive_array_search($needle,$value) !== false) AND ($key['aj_nazwa'] == $where1 && $key['aj_rozmiar_wielkosc_X'] == $where2))) {
            return $current_key;
        }
    }
    return false;
}

ale niestety nie chce działać :(

Potrafiłby ktoś to poprawić?
Bardzo proszę o pomoc.
Łukasz

Awatar użytkownika
iwinho
Posty: 2
Rejestracja: 14 lip 2015, 11:29

Re: Przeszukiwanie tablicy w php

Post autor: iwinho » 22 lip 2015, 16:17

podłączam się do pytania

Awatar użytkownika
ejsapko
Posty: 2
Rejestracja: 24 sie 2015, 15:01
Kontakt:

Re: Przeszukiwanie tablicy w php

Post autor: ejsapko » 24 sie 2015, 15:05

ktoś coś wie? cały czas brak odpowiedzi...

ODPOWIEDZ