Valcha Posted February 2, 2009 Report Share Posted February 2, 2009 (edited) Man ir masīvs $masivs , kurā var būt elements 'elements3' un var nebūt. Tādu elementu ir daudz. Vai nav izdomāta kāda feina funkcija, ar kuru varu darīt tā : echo masivaElements ($masivs['elements3'],'defaulta vertiba'); Ja vērtības nav, tad izvada defaulto, citādi - esošo. Problēma ir tāda, ka pie ieslēgtām noticēm, kliedz, ka nav definēts indekss (nav korekti). Negribas katram masīva elementam rakstīt echo ((isset($masivs['elements3'])?$masivs['elements3']:'defaulta vertiba')); Pieļauju, ka šis ir kārtējais īsti neatrisināmais sīkais uzdevums, bet ja nu tomēr kādam ir pieredze.. Edited February 2, 2009 by Valcha Link to comment Share on other sites More sharing options...
Aleksejs Posted February 2, 2009 Report Share Posted February 2, 2009 Nu iebūvēta tāda funkcija manuprāt nav, bet es rakstītu kaut ko šādu: function masivaElements(&masivs, $atslega, $default){ if array_key_exists($atslega,$masivs){ return $masivs[$atslega]; } else { return $default; } } Ceru, ka sintaksē nenokļūdījos, bet nu ideja, domāju, skaidra ;) Link to comment Share on other sites More sharing options...
Valcha Posted February 2, 2009 Author Report Share Posted February 2, 2009 Ideja ir skaidra, es rakstītu tāpat. Problēma nav funkciju definēt, bet gan vērsties pie tās. Jo, jau vēršoties man ir undefined index! Link to comment Share on other sites More sharing options...
Aleksejs Posted February 2, 2009 Report Share Posted February 2, 2009 Tāpēc, ka vajag padot masivaElements($masivs,'elements','defaultā vērtība'), nevis masivaElements($masivs['elements'],'def...') Link to comment Share on other sites More sharing options...
Valcha Posted February 3, 2009 Author Report Share Posted February 3, 2009 Nu ja, Aleksej. Šādu pieeju esi arī biju ar sevi apspriedis, bet tad tas sanāk tik pat gari, kā rakstīt isset. Nu tad skaidrs! Paldies par idejām! Link to comment Share on other sites More sharing options...
Aleksejs Posted February 3, 2009 Report Share Posted February 3, 2009 Nūū... Viens komats ir mazāk par divām kvadrātiekavām (~; Link to comment Share on other sites More sharing options...
Valcha Posted February 3, 2009 Author Report Share Posted February 3, 2009 (edited) function ifsetor(&$param, $default = FALSE) { return isset($param) ? $param : $default; } Vēršanās pa tiešo pie mainīgā, nevis pie tā kopijas līdz! Ilgi meklēju, bet atradu! Šis līdz masīva elementus ērti nolasīt, vai tie ir vai nav tukši! :) Edited February 3, 2009 by Valcha Link to comment Share on other sites More sharing options...
v3rb0 Posted February 3, 2009 Report Share Posted February 3, 2009 Ja vairāk par pāris reizēm prasi vai masīvā ir 'elements3', varbūt ērtak ir uzsetot visus trūkstošos key'us ar defaulto vērtību, un tālāk pieņemt ka masīvā ir viss tas ko tur vajag. Galu galā, kods sanāks tīrāks, saprotamāks un ar mazak pārbaudēm. Link to comment Share on other sites More sharing options...
bubu Posted February 3, 2009 Report Share Posted February 3, 2009 Tik tavs kods, Valcha, izmainīs masīvu, kas ne vienmēr ir vēlami: <?php function ifsetor(&$param, $default = FALSE) { return isset($param) ? $param : $default; } $a = array(); ifsetor($a["lol"]); print_r($a); ?> outputs: Array ( [lol] => ) Link to comment Share on other sites More sharing options...
Recommended Posts