PHP Notice: Array to string conversion in [path]

raven16

Lieutenant
Registriert
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ß
 
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.
 
Ohje, so einfach hätte ich das jetzt nicht erwartet.
Hatte gefühlt tausend andere Dinge vorher probiert um diese Notice zu entfernen :D
 
Zurück
Oben