Jump to content
php.lv forumi

Funkcija, kas atgriež masīva elementu vai def.vertību


Recommended Posts

Posted (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 by Valcha
Posted

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 ;)

Posted

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!

Posted

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!

Posted (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 by Valcha
Posted

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.

Posted

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] => 
)

×
×
  • Create New...