Jump to content
php.lv forumi

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


Valcha

Recommended Posts

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
Link to comment
Share on other sites

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

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
Link to comment
Share on other sites

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

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

×
×
  • Create New...