konto usunięte
Temat: Przeszukiwanie tablicy w php
Witam serdecznie,Mam taką tablicę:
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:
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:
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