Du scheinst zu verbohrt zu sein
Assoziative Arrays und Variablen
Einklappen
X
-
Zitat von piratos Beitrag anzeigenNö ich sehe das nur nicht so verbissen wie andere.
Ehr mit Erfahrung und Disziplin.
Kommentar
-
PHP-Code:<?php
$id=0;
$userconfig = array(
'overwrite_cache' => 'off', //Cache bei jedem Aufruf neu erstellen: on = an, off = aus
'pic_image_quality' => 90, //Bildqualitaet: 0 = schlechteste , 100 = beste
'show_metadata_iptc' => 'on', //IPTC-Ausgabe: on = an, off = aus
'show_metadata_exif' => 'off', //EXIF-Ausgabe: on = an, off = aus
'dir_cache' => dirname(__FILE__).'/../img/news/'.$id.'/cache', //Pfad zum Cache Verzeichnis
'dir_upload' => dirname(__FILE__).'/../img/news/'.$id, //Pfad zum Upload Verzeichnis
'http_method' => 'GET', //Uebermittlungsmethode der Query-Variable: PATHINFO oder GET
'http_var_name' => 'q', //Name der Query-Variablen die per http_method uebergeben wird
'response_type' => 'json' //Art der Antwort: direkt = json, include = php
);
function news_content($id)
{ global $userconfig;
$userconfig = array(
'overwrite_cache' => 'off', //Cache bei jedem Aufruf neu erstellen: on = an, off = aus
'pic_image_quality' => 90, //Bildqualitaet: 0 = schlechteste , 100 = beste
'show_metadata_iptc' => 'on', //IPTC-Ausgabe: on = an, off = aus
'show_metadata_exif' => 'off', //EXIF-Ausgabe: on = an, off = aus
'dir_cache' => dirname(__FILE__).'/../img/news/'.$id.'/cache', //Pfad zum Cache Verzeichnis
'dir_upload' => dirname(__FILE__).'/../img/news/'.$id, //Pfad zum Upload Verzeichnis
'http_method' => 'GET', //Uebermittlungsmethode der Query-Variable: PATHINFO oder GET
'http_var_name' => 'q', //Name der Query-Variablen die per http_method uebergeben wird
'response_type' => 'json' //Art der Antwort: direkt = json, include = php
);
}
var_dump($userconfig);
news_content(4711);
echo '<hr />';
var_dump($userconfig);
?>
HTML-Code:array(9) { ["overwrite_cache"]=> string(3) "off" ["pic_image_quality"]=> int(90) ["show_metadata_iptc"]=> string(2) "on" ["show_metadata_exif"]=> string(3) "off" ["dir_cache"]=> string(47) "/srv/www/htdocs/leipzigtest/../img/news/0/cache" ["dir_upload"]=> string(41) "/srv/www/htdocs/leipzigtest/../img/news/0" ["http_method"]=> string(3) "GET" ["http_var_name"]=> string(1) "q" ["response_type"]=> string(4) "json" } array(9) { ["overwrite_cache"]=> string(3) "off" ["pic_image_quality"]=> int(90) ["show_metadata_iptc"]=> string(2) "on" ["show_metadata_exif"]=> string(3) "off" ["dir_cache"]=> string(50) "/srv/www/htdocs/leipzigtest/../img/news/4711/cache" ["dir_upload"]=> string(44) "/srv/www/htdocs /leipzigtest/../img/news/4711" ["http_method"]=> string(3) "GET" ["http_var_name"]=> string(1) "q" ["response_type"]=> string(4) "json" }
dem Ansatz kann man leben.
Kommentar
-
ErsetzePHP-Code:function news_content($id)
{ global $userconfig;
PHP-Code:function news_content($id, &$userconfig)
{
global ist hier einfach unnötig und kann eine zusätzliche Fehlerquelle darstellen.
Kommentar
-
Es kommt zuerst drauf an den betreffenden User darauf hinzuweisen das die Var ausserhalb des Scopes liegt (hat aber keiner bis auf meine Kleinigkeit).
Für Leute die sich wegen global oder nicht schütteln kann man es auch so machen:
PHP-Code:<?php
$id=0; // default
$userconfig = array(
'overwrite_cache' => 'off', //Cache bei jedem Aufruf neu erstellen: on = an, off = aus
'pic_image_quality' => 90, //Bildqualitaet: 0 = schlechteste , 100 = beste
'show_metadata_iptc' => 'on', //IPTC-Ausgabe: on = an, off = aus
'show_metadata_exif' => 'off', //EXIF-Ausgabe: on = an, off = aus
'dir_cache' => dirname(__FILE__).'/../img/news/'.$id.'/cache', //Pfad zum Cache Verzeichnis
'dir_upload' => dirname(__FILE__).'/../img/news/'.$id, //Pfad zum Upload Verzeichnis
'http_method' => 'GET', //Uebermittlungsmethode der Query-Variable: PATHINFO oder GET
'http_var_name' => 'q', //Name der Query-Variablen die per http_method uebergeben wird
'response_type' => 'json' //Art der Antwort: direkt = json, include = php
);
function news_content($id,$config)
{
$config['dir_cache']= dirname(__FILE__).'/../img/news/'.$id.'/cache';
$config['dir_upload']= dirname(__FILE__).'/../img/news/'.$id;
return $config;
}
var_dump($userconfig);
$userconfig=news_content(4711,$userconfig);
echo '<hr />';
var_dump($userconfig);
?>
Wer aus einer solchen Pippifaxfunktion eine Klasse stricken will - nun gut .
Kommentar
-
Zitat von piratos Beitrag anzeigenEs kommt zuerst drauf an den betreffenden User darauf hinzuweisen das die Var ausserhalb des Scopes liegt (hat aber keiner bis auf meine Kleinigkeit).
Für Leute die sich wegen global oder nicht schütteln kann man es auch so machen
Kommentar
-
Langer Rede kurzer Sinn, schliesslich kommt es darauf ein eine Lösung anzubieten und das habe ich (und ihr ?).
Global hin und global her, wer weiss was er bei der Nutzung macht kann Vorteile daraus ziehen und das bedeutet ja auch nicht das man das überall so machen wird.
Es ist keine Geschmackssache, war hier aber im Zusammenhang mit dem Hinweis auf das Manual (Scope) sinnvoll, den ganz offenbar bestand ja die Aufgabe darin eine globale Variable inhaltlich zu verändern.
Kommentar
-
Du hast das Problem des TO (Murks in $id) gar nicht verstanden sondern ein ganz anderes Problem (Scope von $userconfig) hinein interpretiert. Mit dem Scoping ist doch alles in Ordnung soweit wir das beurteilen können.
Im ersten Beitrag hat der TO die umgebende Funktion nicht mit gepostet. Später schon. Du hast im ersten Beitrag globalen Scope gesehen und beim zweiten Beitrag angenommen, $userconfig soll _zusätzlich_ in einer Funktion bearbeitet werden. Soll es aber nicht. Diese Variable gibt es vielleicht _nur_ in der Funktion.
Und die Funktion ist vielleicht eine Methode in einer Klasse in einem Namespace ... also immer schön vorsichtig mit Annahmen über Scopes. Ich sehe im ersten Beitrag keinen globalen Scope sondern (spätestens in Kombination mit dem zweiten Beitrag) fehlende Informationen über den Kontext.Zuletzt geändert von onemorenerd; 17.07.2009, 14:57.
Kommentar
-
Zitat von piratos Beitrag anzeigenden ganz offenbar bestand ja die Aufgabe darin eine globale Variable inhaltlich zu verändern.
Aber nun, warten wir erstmal auf die Rückmeldung durch letzteren.
Kommentar
-
Ich würde sagen du liest mal den gesamten Code der vom Fragesteller gepostet wurde (den muss ich ja nicht wiederholen).
Wenn eine var ausserhalb einer Funktion definiert wurde, und wenn man den Inhalt dieser var mit einer Funktion ändern will ohne aber eine Zugriff darauf zu haben (global oder über Para), dann geht das natürlich nicht.
PS. er möchte die Pfade mit der ID verändern.
Kommentar
-
Selbst nach mehrmaligem lesen aller Postings in diesem Thread, kann ich nicht sagen/erkennen, dass das zu verändernde Array wirklich ein globales ist. Deine global Lösung wird also mit großer Wahrscheinlichkeit nicht funktionieren. Natürlich abhängig von dem uns nicht bekannten Kontext. Da es min. 2 Möglichkeiten gibt, wie man das universeller abhandeln kann, erlaube ich mir zu sagen: "Deine Lösung ist Mist!"
Kommentar
-
Zitat von combie Beitrag anzeigen"Deine Lösung ist Mist!"
Frage 2 - wenn man sich die Mühe machen würde den Lösungsansatz zu testen würde man sehen das es funzt, soweit die Tatsachen bekannt sind - sehe keine echte Reaktion oder ?
Kommentar
-
1: Die besseren wurden schon gepostet! Warum sollte ich sie für dich nochmal nachplapperen?
2: Ich habe dir sachlich korrekt begründet WARUM deine Lösung mit hoher Wahrscheinlichkeit nicht funktioniert. Wenn du davor die Augen verschließen musst, dann ist das dein Problem. Aber dann musst du auch mit dem Wiederstand der "Wissenden" leben. Und die Kritik schlucken.
Riecht nach Klugsch.... um mal deine Ausrucksweise anzunehmen.
Kommentar
-
Zitat von combie Beitrag anzeigen1: Dann ist das aber fundierte und qualitativ hochwertige Scheiße. (meistens)
a von dir
b oder andere von meiner abweichenden.
Dabei sollten wir es auch bewenden lassen, bringt nichts.
Kommentar
Kommentar