ray Posted August 19, 2006 Report Share Posted August 19, 2006 Man ir šāds kods: if (isset($_REQUEST['lieta'])) { $jlieta = $_REQUEST['lieta']; if (isset($_SESSION['pas'])) { $pas= $_SESSION['pas']; foreach ($pas as $lieta => $skaits) { if ($lieta == $jauna_lieta) { $skaits_j = $skaits + 1; $pas[$lieta] = $skaits_j; } else { $pas[$jauna_lieta] = '1'; } } } } Problēma ir tāda, ka man nepalielina masīvā ierakstu $skaits pēc pievienošanas atpakaļ masīvā. Nesaprotu, kas par problēmu un kur ir tā problēma. Link to comment Share on other sites More sharing options...
Gundars Posted August 19, 2006 Report Share Posted August 19, 2006 $jauna_lieta ta tev ir nedefineta! Link to comment Share on other sites More sharing options...
tiy Posted August 20, 2006 Report Share Posted August 20, 2006 plus lieto tabus Link to comment Share on other sites More sharing options...
bubu Posted August 20, 2006 Report Share Posted August 20, 2006 Nelieto tabus gan, lieto labāk atstarpes. Link to comment Share on other sites More sharing options...
ray Posted August 20, 2006 Author Report Share Posted August 20, 2006 $jauna_lieta ir nodefinēta Link to comment Share on other sites More sharing options...
bubu Posted August 20, 2006 Report Share Posted August 20, 2006 Vai tiešām? Pārliecinies, ieliekot pašā skripta sākumā error_reporting(E_ALL); Un vai nevar to kodu vienkāršāk uzrakstīt? Kautkā šādi: if (isset($pas[$jauna_lieta])) { $pas[$jauna_lieta]++; } else { $pas[$jauna_lieta] = 1; } Link to comment Share on other sites More sharing options...
Gundars Posted August 20, 2006 Report Share Posted August 20, 2006 $jauna_lieta ir nodefinēta Paskatoties tavā piemēra es redzu, ka tiek piešķirta kautkāda vertība mainīgajam $jlieta, savukārt tālāk tiek izmantots $jauna_lieta ...tatad standarta primitīva kļūda. //domā tik pat primitīvi, kā dators// Link to comment Share on other sites More sharing options...
Delfins Posted August 20, 2006 Report Share Posted August 20, 2006 a viņš lieto saīsinājumus :) Link to comment Share on other sites More sharing options...
ray Posted August 21, 2006 Author Report Share Posted August 21, 2006 Paskatoties tavā piemēra es redzu, ka tiek piešķirta kautkāda vertība mainīgajam $jlieta, savukārt tālāk tiek izmantots $jauna_lieta ...tatad standarta primitīva kļūda. //domā tik pat primitīvi, kā dators// tas ir viens un tas pats, liekot šeit skriptu es pārsaucu mainīgos un vienkārši kļūdījos :/ ok, lai būtu saprotamāk uzrakstīšu šādi: ir masīvs $pas, kura vērtība ir - Array ( [0] => Array ( [10] => 1 ) ). tiek saņemta vērtība "lieta", kura tiek pārdefinēta kā mainīgais $jlieta. tālāk ar foreach funkciju tiek sadalīts mainīgais. foreach ($pas as $lieta => $skaits) { if ($lieta == $jlieta) { $skaits = $skaits + 1; $pas[$lieta] = $skaits; } else { $pas[$jlieta] = '1'; } } ja $lieta sakrīt ar $jlietu, tad vērtība mainīgajā palielinās par 1, ja ne, tad masīvā tiek ievietota vērtība. Tam visam uzrakstīju augstāk minēto skriptu, bet kkas tur īsti labi nestrādā :/ Link to comment Share on other sites More sharing options...
v3rb0 Posted August 21, 2006 Report Share Posted August 21, 2006 Array ( [0] => Array ( [10] => 1 ) ) ? Link to comment Share on other sites More sharing options...
Gundars Posted August 21, 2006 Report Share Posted August 21, 2006 tas ir viens un tas pats, liekot šeit skriptu es pārsaucu mainīgos un vienkārši kļūdījos :/ Ja $pas masiivs ir tuksh (un pirmaja reize tas ir vienmer tuksh), tad tavs foreach cikls vispar neizpildas, jo nav kam izpildiities....array ir 0. pareizu kodu sk...bubu komentaara.. Link to comment Share on other sites More sharing options...
ray Posted August 21, 2006 Author Report Share Posted August 21, 2006 Array ( [0] => Array ( [10] => 1 ) ) ? jā, [0] ir key, 10 ir lietas id nummurs un 1 ir lietu skaits. Ja $pas masiivs ir tuksh (un pirmaja reize tas ir vienmer tuksh), tad tavs foreach cikls vispar neizpildas, jo nav kam izpildiities....array ir 0. pareizu kodu sk...bubu komentaara.. tādu domu esmu pieļāvis un šī ir skripta daļa, ja masīvs nav 0. Link to comment Share on other sites More sharing options...
john.brown Posted August 21, 2006 Report Share Posted August 21, 2006 $pas, kura vērtība ir - Array ( [0]=> Array ( [10] => 1 ) )... foreach ($pas as $lieta => $skaits).... Tādā variantā tev, domāju, $lieta == 0, un $skaits == 'Array' :) Link to comment Share on other sites More sharing options...
ray Posted August 21, 2006 Author Report Share Posted August 21, 2006 Tādā variantā tev, domāju, $lieta == 0, un $skaits == 'Array' :) foreach ($pas as $gr) { foreach ($gr as $lieta => $skaits) { if ($lieta == $jlieta) { $skaits = $skaits + 1; $pas[$lieta] = $skaits; } else { $pas[$jlieta] = '1'; } } } Link to comment Share on other sites More sharing options...
Gundars Posted August 21, 2006 Report Share Posted August 21, 2006 .... PHP pec tavas rindas $pas[$lieta] = $skaits_j - nākošajā foreach vai arī foreach beigās atjauno masība elementus ar iepriekšējām vērtībām. respektīvi PHP nemīl, kad foreach laikā tiek modifeicets masīvs elementi. Varbut veel var psapeleties ar set/unset/references utt, bet neredzu jegas, risinaat lietu, kurai ir cits risinajums, pie tam stabilaaks un aatraaks:))) Link to comment Share on other sites More sharing options...
Recommended Posts