Eigene isset()-Funktion programmieren

the snake II

Erfahrenes Mitglied
Hallo zusammen,

man kann zwar isset() mit mehreren Argumenten füttern, jedoch müssen alle übergebenen Variablen isset() sein.

Ich möchte dagegen eine Funktion schreiben, die true ausgibt, wenn mindestens eine der Variablen gesetzt ist.

Dazu habe ich folgende Funktion geschrieben:
PHP:
function oisset(){
	$args = func_get_args();
	foreach($args as $arg){
		if(isset($arg))
			return true;
	}
	return false;
}

Da hapert es natürlich an mehreren Punkten. Erstens können ja nur gesetzte Variablen übergeben werden, ohne einen "Undefined variable" oder "Undefined index" Error zu verursachen. Zweitens sind dann ja die Argumente immer gesetzt, wenn sie mit func_get_args() geholt werden.

Ist es möglich eine solche Funktion zu realisieren?

Gruß,

André
 
So etwas in der Art:

PHP:
<?php

$a = 1;
$b = 2;

$d = 4;

echo oisset(get_defined_vars());

function oisset ($param) {

$vars = array ("a", "b", "c", "d", "e");

foreach ($vars as $var) {
    if (isset($param[$var])) return true;
}

return false;

}
?>
 
tombe's Lösung, die Bezeichner als String zu übergeben, ist wohl das eleganteste, was hier möglich ist.
Das Array der Bezeichner soll dabei aber auch übergeben werden:
PHP:
    function oisset ($vars,$defined_vars) {
        foreach ($vars as $var) {
            if (isset($defined_vars[$var]))
                    return true;
        }
        return false;
    }
Man könnte auch einfach "key_exists()" benutzen, allerdings würden dabei auch NULL gesetzte Variablen existieren, welche bei isset() false rückgeben würden.
Danke!
 
Zurück