Aller eerst allemaal de beste wensen voor 2019.

Mijn INI-file ziet er als volgt uit (Dit is een fragment er uit)

[algemeen]
programmanaam = testnaam
versienummer = 0.1.1


Deze wil ik wijzigen in:

[algemeen]
programmanaam = testnaam
versienummer = 0.1.2


Het versienummer is dan dus gewijzigd.

Het aanmaken van het bestand is geen probleem, dus dacht ik het op de zelfde manier te doen.
Hiervoor heb ik een functie:

//functie om ini-bestand te maken
function write_ini($filename, $b) {
	$output = '';
	foreach ($b as $section => $settings) {
		$output .= '[' . $section . ']' . PHP_EOL;
		foreach ($settings as $key => $value) {
			$output .= $key . ' = ' . $value . PHP_EOL;
		}
		$output .= PHP_EOL;
	}
	file_put_contents($filename, $output);
	return true;
}


Met de volgende code dacht ik het muteren te kunnen doen, maar dat lijkt hij niet te doen.
Ik hoopte hiermee de volledige array die ik eerst heb uitgelezen, gemuteerd weer terug te plaatsen.


$b = array(
'algemeen'=>array(
	'programmanaam'=>$programmanaam,
	'versienummer'=>$versienummer),
....);
			
write_ini($filename, $b);

Iemand een tip?

Alvast bedankt voor de assistentie.

Vriendelijke groet,
Frits van Leeuwen
Ga eens na of de modified-date wel wordt aangepast.
Dan weet je in eider geval of het bestand 'aangeraakt' wordt, of niet.

Ook hoop ik dat dit ini-bestand niet oproepbaar is door anderen. Dat is het nadeel van .ini, .json en .xml bestanden; ze worden niet geparsed. Bij .php gebeurt dit wel, waardoor een config.php altijd leeg is. Het beste is dat je ook deze buiten je webroot zet.
Ik heb de code onderaan bij beide geplakt
Bij het aanmaken staat:

array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.1"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}


en bij het muteren staat:



array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.2"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}


Dus dat gedeelte gaat goed.
Voeg na dat stukje van net ook nog eens dit toe:

<?php

echo '<br>------<br>';
$test = parse_ini_file($filename,true);
var_dump($test);

?>
bij aanmaken
array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.1"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}

------
array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.1"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}


bij muteren

array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.2"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}

------
array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.2"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}

Het resultaat in het bestand is nog steeds alleen de inhoud van het aanmaken.
Kijk, dit is positief :-)

In het muteren-bestand zie je dat de 2e array hetzelfde is als de eerste.

Echter, de 2e array is ingelezen vanuit het zojuist aangemaakte bestand.

Het werkt dus wel, maar om een of andere reden krijg jij de verkeerde inhoud te zien. Wellicht heeft dat te maken met caching. Maar de code werkt dus prima.
pffff inderdaad positief. Dank je wel. Ik ga er op een later tijdstip mee verder. Ik denk wel dat ik nu weer verder kan experimenteren.
Graag gedaan. Succes ermee :-)

Reageren