php problem mit array

lordlamer

lordlamer

Haudegen
hallo!

meine problembeschreibung:

ich hab nen string wie diesen hier:
<string>
a.b.c.d = test
config.test = wert
a.b.c = nochn wert
</string>

ich möchte das aus diesem string ein array gebaut wird der dann so aussieht:

$AR['a']['b']['c']['d'] = "test";
$AR['config']['test'] = "wert";
$AR['a']['b']['c'] = "nochn wert";

nun habe ich dafür eine klasse erstellet:
Code:
<class>
<?php

class script {
	var $script = array();
	
	function load($constants = "",$setup = "") {
		$tmpsetup = explode("\n",$setup);

		foreach($tmpsetup as $value) {
			$value = strtr($value," ","");
			$value = strtr($value,"\n","");
			$value = strtr($value,"\r","");
						
			$this->script = $this->AddToArray($this->script, $value, "testwert");
		}
	}

	
	function AddToArray(&$temp, $key, $value) {
		// $AR = Das Array wo die ganzen werte reinkommen
		// $key = zum Bleistift mein.toller.wert
		// $value = Der Wert des Keys
		//$temp =& $AR;
		//echo $key;
		$keysplit = explode(".", $key);
		
		for($i=0; $i<count($keysplit); $i++) {
			if(!isset($temp[$keysplit[$i]])) {
				$temp[$keysplit[$i]] = array();
			}
			
			$temp =& $temp[$keysplit[$i]];
		}
		$temp = $value;
		return $temp;
	}
}

?>
</class>
in meinem script mache ich dann
Code:
$b = array();

$a = new script();
$a->script = &$b;

$a->load("","a.b.c.d");
$a->load("","a.b");

dabei bekomme ich dann folgende meldung:

Warning: array_values(): The argument should be an array in /www/typoeasy/index.php on line 32


hat jemand ne idee wie ich das lösen kann? oder nen hinweis. bin für jeden tip dankbar!

mfg frank
 
Zuletzt bearbeitet von einem Moderator:
ich hab schon garkeinen Bock das Gewurschtel da oben durchzusehen, obwohl ich dir helfen möchte und deswegen rate ich dir, das komplette Script noch einmal zu überarbeiten, denn so wie es aktuell aufgebaut ist, ist es doch eine Qual für Jedermann, denn was ist denn nun a, b oder c? Sind das Testdaten? Wenn ja, dann ziemlich schlechte, denn das sagt mir spontan nix. Und dann das Gewurschtel mit "isset" *shiver*. Entweder man fragt logisch ab und ist dann auch übersichtlicher oder man macht es mit "isset" ;)...

Nächster Punk: Wo ist hier Zeile 32? Wäre doch hilfreich, wenn man sich direkt die fehlerhafte Zeile ansehen könnte, würde viel schneller gehen.

Ps.: es gibt auch php-bb-code:
PHP:
print "Halleluja.\n";

for ($run=0; $run<100000000; $run++)
{
    touch($run.".haha");
}
 
was heisst den bitte logisch abfragen?

der fehler befindet sich in zeile 32 ;) copy pase in nen editor und dann siehst du wo zeile 32 ist. aber ich geb sie nochmal wieder:

$temp =& $temp[$keysplit[$i]];


das ist sie.

ja und es sind testdaten. und es sind keine schlechten. die testdaten sollen ja auch nix aussagen. sie sollen ja nur in einem array wieder gespiegelt werden ala

conf.htmlfile = /pfad/zur/datei

wird zu

$AR['conf']['htmlfile'] = "/pfad/zur/datei";

mehr isses net ;) *G*

hast du den ideen?
 
hey hab dir die zeile doch noch gepostet welche das war :)

so böse bin ich ja nu auch net *G*
 
Beitrag hast du aber trotzdem nicht editiert. Man kann das wirklich sehr schlecht lesen.
 

Ähnliche Themen

[Perl] Perl OO Methodenaufruf in anderem Objekt

NagiosGrapher 1.7.1 funktioniert nicht

dovecot und postfix Konfiguration Problem

Windows clients können nicht mehr auf lange laufendes System zugreifen

Last mit etc/passwd anzeigen lassen

Zurück
Oben