Jump to content
php.lv forumi

foreach un if


ray

Recommended Posts

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

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

$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

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

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

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

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

.... 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

×
×
  • Create New...