PHP Notice: Array to string conversion in [path]

raven16

Lieutenant
Dabei seit
Nov. 2008
Beiträge
580
Hallo,

ich bekomme folgende Ausgabe und weiß leider nicht genau, wodurch der Notice verursacht wird:
Array ( [0] => 2013-09-01 [1] => 2015-11-01 )
Notice: Array to string conversion in D:\...\index.php on line 78
Array
Mein Quelltext:
PHP:
<?php
/**
*	Funktion, die einen Monatszeitraum von 
*	einem enddate berechnet, z.B. wird aus
*	31. Oktober 2015 der Zeitraum im Format
*	2015-10-01 bis 2015-09-01.
*	
*	## Param
*	$enddate = timestamp
*	$months = Integer
*	## Return
* 	Array[0] = Startdatum
*	Array[1] = Enddatum
*/
function sp_timescale($timestamp, $months){
	if(!is_int($timestamp) || !is_int($months))
		return false;
	
	$tmp_date = date("Y-m-d", $timestamp);	
	if(preg_match("#^(\d{4})-(\d{2})-(\d{2})$#", $tmp_date) != 1)
		return false;
		// Enddatum generieren
	$tmp_date = explode("-", $tmp_date);
	$yyyy = $tmp_date[0];
	$mm = $tmp_date[1];
	$dd = "01";
	$bis = $yyyy.'-'.$mm.'-'.$dd;
	
	// Startdatum generieren
	if(floor($months / 12) > 0){
		$yyyy = $yyyy - floor($months / 12); // yyyy div 12 (Teiler ohne Rest von Jahr abziehen)
		$mm_mod = $months % 12; // yyyy mod 12 (Rest muss noch abgezogen werden) 
	}
	
	if(isset($mm_mod)) 
		$mm_von = $mm - $mm_mod;
	else
		$mm_von = $mm - $months;
	
	// Prüfen, ob Jahresschwelle unterschritten wird
	if($mm_von <= 0){
		$yyyy--;
		$mm = 12 - abs($mm_von);
	}
	else $mm = $mm_von;
	
	if($yyyy < 10){
		settype($yyyy, 'String');
		$yyyy = '0'.$yyyy;
	}
	if($mm < 10){
		settype($mm, 'String');
		$mm = '0'.$mm;
	}
	
	$von = $yyyy.'-'.$mm.'-'.$dd;
		
	$arr_date = array($von, $bis);
	print_r($arr_date);
	
	return $arr_date;
}	
?>

<!DOCTYPE html>
<html lang="de">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>test</title>
  </head>
  <body>
	<?php
		$time = time();
		echo sp_timescale($time,26);
	?>
  </body>
</html>
Die Funktion gibt zumindest genau das geforderte Ergebnis im Format yyyy-mm-dd aus, was schon mal schön ist.

Ich hoffe ihr habt einen wertvollen Tipp für mich :)

Generelle Verbesserungen zum Quellcode nehme ich auch gerne entgegen :lol:

Gruß
 

t2000r

Cadet 3rd Year
Dabei seit
Aug. 2006
Beiträge
45
Hallo,

die Funktion sp_timescale() gibt ein arry zurück, welches du mit echo zu einem String konvertierst, was eine Notice erzeugt. Entferne das echo, da du eh in der Funktion eine Ausgabe mit print_r() erzeugst.
 

raven16

Lieutenant
Ersteller dieses Themas
Dabei seit
Nov. 2008
Beiträge
580
Ohje, so einfach hätte ich das jetzt nicht erwartet.
Hatte gefühlt tausend andere Dinge vorher probiert um diese Notice zu entfernen :D
 
Top