Valcha Posted February 2, 2009 Report 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
Aleksejs Posted February 2, 2009 Report 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 ;)
Valcha Posted February 2, 2009 Author Report 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!
Aleksejs Posted February 2, 2009 Report Posted February 2, 2009 Tāpēc, ka vajag padot masivaElements($masivs,'elements','defaultā vērtība'), nevis masivaElements($masivs['elements'],'def...')
Valcha Posted February 3, 2009 Author Report 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!
Aleksejs Posted February 3, 2009 Report Posted February 3, 2009 Nūū... Viens komats ir mazāk par divām kvadrātiekavām (~;
Valcha Posted February 3, 2009 Author Report 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
v3rb0 Posted February 3, 2009 Report 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.
bubu Posted February 3, 2009 Report 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] => )
Recommended Posts