Funktion gibt nix zurück

Soapp

Erfahrenes Mitglied
Hi Profis,

in der Schleife das var_dump($finalstring)....
Das $namen ausserhalb der Schleife ist aber NULL.
*kopfkratz*
Weiss jemand was drüber ?

Danke

Soapp


PHP:
function schleife
{
    ......
     $finalstring[$name] = 	$rule_id;
    .....
    if ($rule_id_new == 0) 
         {    
          var_dump ($finalstring);  // hier isses noch richtig
          return $finalstring; 
          } 
	
}


$namen = schleife ();	
var_dump($namen)   // kommt NULL raus
 
Gumbo hat gesagt.:
Tritt denn überhaupt der Moment ein, dass der Teil mit der Rückgabe abgearbeite wird?


klar, da steht ja auch: var_dump ($finalstring);

Ausgabe des Scripts:

array(2) { ["blabla"]=> string(4) "2110" ["blubb"]=> float(2109) }

NULL

Nachtrag:

Wenn das Array nur 1 Element hat, funktioniert es, das heisst $namen erhält den Rückgabewert der Funktion:
array(1) { ["bla"]=> string(4) "2109" }
Ab 2 Elementen ist der RÜckgabewert NULL
*GRÜBEL*
 
Zuletzt bearbeitet:
masmin hat gesagt.:
Vielleicht könnte man mehr darüber sagen, wenn man mehr Code zum Betrachten hätte


Hilft das wirklich ?
Danke

PHP:
function schleife($to_rule_id,$finalstring="")
{ 
    if ($to_rule_id)
	    {					
	      settype($to_rule_id,int);
              $query2 = "SELECT  SHORTNAME,TO_RULE_ID FROM RULES 
                               WHERE   STATUS=1 AND ID=$to_rule_id ";
	     $query=query_zeile($query2);

            $to_rule_id_new = $query['TO_RULE_ID']; 	
            $name = $query['SHORTNAME'];

            $finalstring[$name] = $to_rule_id;			
						
						if ($to_rule_id_new == 0) 
						{
						   var_dump($finalstring); // hier stimmt es
						    return ($finalstring);  
						
						}else
						    {
						list($to_rule_id,$finalstring) = 
                                                schleife($to_rule_id_new,$finalstring);
						}
						
						
	       }
}
$namen = array();
$namen = schleife($to_rule_id);
var_dump($namen); // hioer kommt NULL raus
 
Funktionen sollten immer einen Wert zurückgeben – notfalls auch nur ein „true“, „false“ oder „null“. Zudem sollten die Namen Funktionen dessen Aufgabe beschrieben.
PHP:
function getRulesById($ruleId, $retVal=array()) 
{
	// Validierung des Werts
	if( $ruleId == ($ruleId = intval($ruleId)) || $ruleId < 0 ) {
		return false;
	}

	$query = '
		SELECT
		        `SHORTNAME`,
		        `TO_RULE_ID`
		  FROM
		        `RULES`
		  WHERE
		        `STATUS` = 1
		    AND `ID` = '.$ruleId.'
		';
	$row = query_zeile($query);
	$retVal[$row['SHORTNAME']] = $row['TO_RULE_ID'];
	if( $row['TO_RULE_ID'] == 0 ) {
		return $retVal;
	} else {
		return getRulesById($row['TO_RULE_ID'], $retVal);
	}
}
 
Gumbo hat gesagt.:
Funktionen sollten immer einen Wert zurückgeben – notfalls auch nur ein „true“, „false“ oder „null“. Zudem sollten die Namen Funktionen dessen Aufgabe beschrieben.
PHP:
function getRulesById($ruleId, $retVal=array()) 
{
	// Validierung des Werts
	if( $ruleId == ($ruleId = intval($ruleId)) || $ruleId < 0 ) {
		return false;
	}

	$query = '
		SELECT
		        `SHORTNAME`,
		        `TO_RULE_ID`
		  FROM
		        `RULES`
		  WHERE
		        `STATUS` = 1
		    AND `ID` = '.$ruleId.'
		';
	$row = query_zeile($query);
	$retVal[$row['SHORTNAME']] = $row['TO_RULE_ID'];
	if( $row['TO_RULE_ID'] == 0 ) {
		return $retVal;
	} else {
		return getRulesById($row['TO_RULE_ID'], $retVal);
	}
}






nasowas, auf einmal gehts ;)
Wo kann man sich nochmal für das Seminar "schöner PHP programmieren" anmelden ? ;)

Tausend Dank

Soapp
 
Zurück