Tom: Closures und Rekursion

Beitrag lesen

Hello,

Zeigst du uns den Code?

Hier schon mal das Testscript:

  
<?php   ### parse_ini_file.php ### Ini-File auslesen ### utf-8 ### ÄÖÜäöü  
  
### only for testing  
header('Content-Type: text/html; Charset=utf-8');  
$source = 'ini_file.dat';	## Dateiname für die Datendatei  
$target = 'ini_file.write.dat'; ## Dateiname für die Ausgabe  
  
    $fs = @fopen($source, 'rb+');  
    $ft = @fopen($target, 'wb+');  
	  
#===================================================================================================  
function ini_read($fp)	  
{	  
	if (!$fp) return false;  
	if (!@flock($fp, LOCK_EX)) return false;  
    if (false === ($_fstat = @fstat($fp))) return false; 	  
	if (false === ($cont = fread($fp, $_fstat['size']))) return false;  
	if (false === ($_data = @parse_ini_string($cont, true))) return false;  
  
	return $_data;  
}  
#===================================================================================================  
function writeparams($_values, $arraykey, $depth, $fp, $maxdepth)  
{  
  
	foreach ($_values as $key => $param)  
	{  
		if ($depth >= 1)  
		{  
			$arraykeytxt = $arraykey . "[$key]";  
		}	  
		else  
		{  
			$arraykeytxt = $key;  
		}  
  
		if (is_array($param))  
		{  
		    $depth++;  
		    if ($depth <= $maxdepth)  
			{  
				writeparams ($param, $arraykeytxt, $depth, $fp, $maxdepth);  
			}	  
		}  
		else  
		{  
			fwrite ($fp, "$arraykeytxt = '$param'" . PHP_EOL);	  
		}  
	}  
	return true;  
}  
  
#===================================================================================================  
function ini_write($fp, $_data, $filename, $maxdepth=3)  
{  
    #---------------------------------------------------------------------------  
	$writeparams = function ($_values, $arraykey, $depth) use ($fp, $maxdepth, &$writeparams)  
	{  
		foreach ($_values as $key => $param)  
		{  
			if ($depth >= 1)  
			{  
				$arraykeytxt = $arraykey . "[$key]";  
			}	  
			else  
			{  
				$arraykeytxt = $key;  
			}  
  
			if (is_array($param))  
			{  
				$depth++;  
				if ($depth <= $maxdepth)  
				{  
					$writeparams ($param, $arraykeytxt, $depth);  
				}	  
			}  
			else  
			{  
				fwrite ($fp, "$arraykeytxt = '$param'" . PHP_EOL);	  
			}  
		}  
		return true;  
	};  
  
    #---------------------------------------------------------------------------  
  
	$depth = 0;  
	$arraykey = '';  
	  
	foreach ($_data as $section => $_value)  
	{  
		if (is_array($_value))  
		{  
            fwrite ($fp, PHP_EOL . "[$section]" . PHP_EOL);  
			  
	        if ($depth < $maxdepth)  
			{  
	    		$writeparams ($_value, $_value, $depth);  
#	    		writeparams ($_value, $section, $depth, $fp, $maxdepth);  
			}  
		}	  
		else  
        {  
            fwrite ($fp, "$section = '$_value'" . PHP_EOL);	  
        }		  
	}  
}  
  
#==================================================================================================  
  
echo "<pre>\r\n";  
  
if (false === ($_data = ini_read($fs))) echo htmlspecialchars(print_r(error_get_last(),1)) . "\r\n";  
else  
{  
	echo htmlspecialchars(print_r($_data,1)) . "\r\n";  
	ini_write($ft, $_data, $target, 3);  
}	  
  
echo "</pre>\r\n";  
  
?>  
  

und die Source-Datei:

  
;### ini_file.dat ### 2014-05-18 13:46:34 ### utf-8 ### ÄÖÜäöü  
  
param1 = eins  
param2 = zwei  
param3 = drei  
  
[meta]  
calls = 9  
  
[active]  
0 = braun  
1 = rot  
2 = grau  
3 = blau  
4 = violett  
5 = grün  
6 = orange  
7 = gold  
  
[reserve]  
0 = weiß  
1 = silber  
2 = schwarz  
3 = gelb  
  
[tom]  
alter = 56  
wohnung[plz] = 34444  
wohnung[ort] = 'Sankt Andreasberg'  
wohnung[strasse] = 'Mühlenstraße'  
wohnung[hausnummer] = 19  
;comm[tel][] = '05582/999378' ; geht nicht, nur eine Array-Tiefe erlaubt  
;comm[tel][] = '05582/999362' ; geht nicht, nur eine Array-Tiefe erlaubt  
tel[] = '05582/999378'  
tel[] = '05582/999362'  
  

Man muss umschalten zwichen der Funktion writeparams() und der Closure $writeparams und sich die Zieldateien ansehen.

Ich würde mich freuen, wenn es nur ein Trivialfehler wäre.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bikers-lodge.com
0 52

Closures und Rekursion

Tom
  • php
  1. 0
    1UnitedPower
    1. 0
      tami
      1. 0
        1UnitedPower
        • javascript
        1. 0
          tami
    2. 0
      Tom
      1. 0
        tami
      2. 0
        1UnitedPower
        1. 0
          Tom
          1. 0
            tami
  2. 0
    tami
    1. 0

      Closures und Rekursionm, please Pimp my Knowledge

      Tom
      1. 0
        tami
  3. 0
    molily
    1. 0
      Tom
      1. 0
        tami
    2. 0
      Tom
      1. 0
        tami
        1. 0
          Tom
          1. 0
            tami
            1. 0
              tami
              1. 0

                Wann machen Closures in PHP überhaupt Sinn?

                tami
                1. 0
                  Tom
                  1. 0
                    tami
                    1. 0
                      Tom
                      1. 0
                        tami
                2. 0
                  mrjerk
                  1. 0
                    tami
                    1. 0

                      Closures im Zend Framework

                      tami
                      1. 0
                        Tom
                        1. 0
                          tami
                      2. 0
                        tami
                        1. 0
                          tami
                          1. 2
                            1UnitedPower
                            • zu diesem forum
                            1. 0
                              tami
                              1. 0

                                Closures im Zend Framework und bei php.net

                                tami
                                1. 0

                                  Closures im Zend Framework und bei php.net = anonyme Funktionen

                                  tami
                                  • php
                                  1. 0
                                    tami
                    2. 0
                      Tom
                      1. 0
                        tami
            2. 0
              Tom
              1. 0
                tami
              2. 0
                tami
                1. 0
                  Tom
                  1. 0
                    tami
  4. 0

    Closures und Rekursion. into the depth

    Tom
    1. 0
      tami
    2. 0
      1UnitedPower
      1. 0

        Fehler gefunden

        Tom
        1. 0
          1UnitedPower
    3. 0
      Tom
      1. 0

        New messages from "dem schönen Oberharz" (Forumsidee!)

        Matthias Apsel
        • zu diesem forum