php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 27-05-2009, 17:23
viego
 Registrierter Benutzer
Links : Onlinestatus : viego ist offline
Registriert seit: May 2009
Beiträge: 10
viego befindet sich auf einem aufstrebenden Ast
Standard

Wenn man error_reporting auf E_ALL hat :P

@phpMorpheus2: Unsere Aussagen decken sich ja dann doch. Ich wollte dich nur mal anstubsen, dass du vielleicht außerhalb der Array-Welt schaust, ob es da eine bessere Lösung für dein Problem gibt. Wobei "besser" hier wohl als "schöner" zu interpretieren ist. Vielleicht fällt dir ja eine schöne Klassen-Konstruktion ein...
Mit Zitat antworten
  #17 (permalink)  
Alt 27-05-2009, 17:32
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

@phpMorpheus2
fixier dich nicht auf array_push. das brauchst du in javascript ständig, aber nicht in php. da kannst du viel einfacher vorgehen.
Zitat:
Vielleicht fällt dir ja eine schöne Klassen-Konstruktion ein.
es muss doch nicht alles in oop gemacht werden. arrays sind wunderbar geeignet, um datenstrukturen abzubilden. also warum nicht damit arbeiten?

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #18 (permalink)  
Alt 27-05-2009, 17:39
viego
 Registrierter Benutzer
Links : Onlinestatus : viego ist offline
Registriert seit: May 2009
Beiträge: 10
viego befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von phpMorpheus2 Beitrag anzeigen
...
Ich suche nur sehr oft nach verbesserungsmöglichkeiten um alles komfortabler
und sauberer programmieren zu können.
Ich kann ein sehr schönen Algo haben, dennoch versuche ich immer wieder
etwas zu verbessern.

...
Na weil er doch auch andere Wege sucht. Und sich weiter entwickeln will. Der OOP-Ansatz war ja nur ein Beispiel. Von mir aus kann er seine Daten nur in a und b codiert ablegen. Hauptsache es macht ihm Spaß.
Mit Zitat antworten
  #19 (permalink)  
Alt 27-05-2009, 17:48
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Weil $arr['etc'] kein Array ist und die Funktion array_push() eben so implementiert ist, dass es dann eine Notice gibt. Steht doch im Manual.
Natürlich steht das im Manual.
Das war auch nicht die Frage, wie array_push() funktioniert,
sondern ob es eine Möglichkeit gibt, eine definierte Array "samt aller Unterebenen" als array zu deklarieren!
Mit Zitat antworten
  #20 (permalink)  
Alt 27-05-2009, 17:51
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

sind denn die unterebenen bekannt? und auch deren struktur? sag mal, was du konkret vorhast. vielleicht hilft das meinem verständnis auf die sprünge.

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #21 (permalink)  
Alt 27-05-2009, 17:53
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard

Ich misch mich einfach mal kackendreist ein…

Aber ist es nicht so (mein Kentnissstand ist nicht besoders hoch, man verzeihe mir Missverständnisse), dass man in PHP Variablen garnicht "fest" deklarieren kann?

Wenn ich "$var = 'hello'" schreibe und irgendein Honk schreibt weiter unten im Code (aus Versehen?) "$var = array('hello', 'world')" – kann ich doch nichts gegen machen?
Mit Zitat antworten
  #22 (permalink)  
Alt 27-05-2009, 18:05
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Wenn ich "$var = 'hello'" schreibe und irgendein Honk schreibt weiter unten im Code (aus Versehen?) "$var = array('hello', 'world')" – kann ich doch nichts gegen machen?
Korrekt!
Und genau darum sollte man grundsätzlich auf globale Variablen verzichten.
Das ist eine einfache Möglichkeit, um unerwünschte Seitenefekte zu vermeiden.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #23 (permalink)  
Alt 27-05-2009, 18:07
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok Kropff.

Also es ist so, dass ich eine Array als Return Wert zurück gebe mit den berechneten Daten.
So kann die Useroberfläche mit dem Design besser angepasst werden, wenn nur eine Array mit allen Informationen vorhanden ist und nicht alle Berechnungen etc. (Verständlich oder)

Nun wird in einer Funktion eine Array mit mehreren Werten gefüllt.
z.B. ob es einen Fehler gab.
Wenn ja, die Fehlernachricht.
Wenn es keinen Fehler gab, dann err=false und in die selbe Array werden dann die Daten gepackt.

eine fertige Array die als Return Wert zurückgegeben wird sieht z.B. so aus:
PHP-Code:
Array
(
    [
row] => Array
        (
            [
0] => Array
                (
                    [
col] => 1
                    
[status] => 4
                    
[id] => 16
                    
[timestamp] => 1239635577
                    
[subject] => Test 1
                
)

            [
1] => Array
                (
                    [
col] => 1
                    
[status] => 4
                    
[id] => 17
                    
[timestamp] => 1232368569
                    
[subject] => Test 2
                
)

            [
2] => Array
                (
                    [
col] => 2
                    
[status] => 0
                    
[id] => 20
                    
[timestamp] => 1239635455
                    
[subject] => Test 4
                
)

        )

    [
err] => false
    
[msg] => Kein Fehler

In dieser Array sind nun alle Daten die ich zur Anzeige brauche und schöpfe Sie auch daraus.

Ist kein Fehler vorhanden, so wird [row] durchgegangen und alle Einträge werden als Liste aufgelistet usw.

Wenn ich in meinem Code nun MEHR als nur [err] und [msg] definiere,
weil ich z.B. mehrere Informationen brauche,
so möchte ich nicht immer alle $arr['err'] $arr['msg'] usw. extra definieren müssten!

Code (vereinfacht, freihand):
PHP-Code:
$arr = array();
$arr['err'] = array();
$arr['msg'] = array();
$arr['row'] = array();

$arr['err'] = false;
$arr['msg'] = "Kein Fehler";

array_push($arr$arr['err']);
array_push($arr$arr['msg']);

while...
{
array_push($arr['row'], $row);
}

// usw. 
Ich muss für jede Unterebene der Variable deklarieren, damit
array_push als Argument eine Array vorliegen hat.
Das die Funktion als Argument eine Array braucht ist ja nicht das Problem.
Es geht mir nur darum, alles zu deklarieren, anstatt einfach NUR $arr als Array
zu deklarieren und somit auch alle etweigen unterbenen die erstellt werden.

Natürlich ist es logisch, dass es nicht so ist!
Ich suche aber eine Möglichkeit, dies zu bewerkstelligen.

Hoffe, es hilft
Mit Zitat antworten
  #24 (permalink)  
Alt 27-05-2009, 18:11
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Vergiss doch endlich bitte das array_push !!!!!

PHP-Code:
$arr = array(); 
// $arr['err'] = array();  Unsinn!
// $arr['msg'] = array();  Unsinn!
$arr['row'] = array(); 

$arr['err'] = false
$arr['msg'] = "Kein Fehler"

// array_push($arr, $arr['err']); Unsinn
// array_push($arr, $arr['msg']); Unsinn

while... 

//   array_push($arr['row'], $row); 
   
$arr['row'][] = $row// reicht dir doch zu 100%, oder?


// usw. 
__________________
Wir werden alle sterben

Geändert von combie (27-05-2009 um 18:13 Uhr)
Mit Zitat antworten
  #25 (permalink)  
Alt 27-05-2009, 18:16
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Wie schon gesagt wurde, wenn $x als array() definiert ist - dann kannst du
PHP-Code:
$x['blah'][47]['blubb'][] = $wert
schreiben, ohne auch nur eine einzige dieser "Ebenen" explizit deklariert zu haben - das macht PHP bei deren erster Verwendung automatisch.

Und das letzte [] ist der "Ersatz" für array_push - es legt dort ein neues Array-Element an, und zählt dabei den nummerischen Index hoch.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #26 (permalink)  
Alt 27-05-2009, 18:20
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja, das wollte ich wissen.
Perfekt. Somit wieder ein haufen unnütze Arbeit unf Performance erspart!

Danke jungs. Ihr seit die besten
Mit Zitat antworten
  #27 (permalink)  
Alt 27-05-2009, 18:21
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von phpMorpheus2 Beitrag anzeigen
Ja, das wollte ich wissen.
Perfekt. Somit wieder ein haufen unnütze Arbeit unf Performance erspart!

Danke jungs. Ihr seit die besten
Man hätte sich auch einfach mal die Grundlagen über Arrays anschauen können. Denn nichts anderes ist das.
Mit Zitat antworten
  #28 (permalink)  
Alt 27-05-2009, 18:24
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

PHP-Code:
array_push($arr$arr['err']);
array_push($arr$arr['msg']); 
Was soll das werden? Vertippt?

Übrigens keine gute Idee, Funktionen irgendwelche Datenstrukturen zurückgeben zu lassen, die außerhalb interpretiert werden müssen.
Bei der Suche nach "Eleganz im Detail" leider den Blick fürs Wesentliche verloren ...
Mit Zitat antworten
  #29 (permalink)  
Alt 27-05-2009, 18:30
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
PHP-Code:
array_push($arr$arr['err']);
array_push($arr$arr['msg']); 
Was soll das werden? Vertippt?

Übrigens keine gute Idee, Funktionen irgendwelche Datenstrukturen zurückgeben zu lassen, die außerhalb interpretiert werden müssen.
Bei der Suche nach "Eleganz im Detail" leider den Blick fürs Wesentliche verloren ...
Warum keine gute Idee?
Eine Funktion wird angesprochen, brechnet die Daten und gibt Sie zurück.
Was soll die Funktion denn sonst machen?
Direkte Ausgabe?

PS: Ja, vertippt :-P
Mit Zitat antworten
  #30 (permalink)  
Alt 27-05-2009, 19:30
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

err und msg sind aber keine Daten.

Wenn ich es richtig verstanden habe, sind die Daten auch nicht immer gleich strukturiert. Im Beispiel da oben hast du zum Beispiel nur eine row. Was ist, wenn du eine ganze Liste zurückgeben willst? Wird das dann $arr['row'] = $list oder doch $arr['list']? Wie auch immer du darauf antwortest, der Empfänger dieses Arrays muss wissen was er da vor sich hat. Denn die Struktur selbst gibt darüber keine Auskunft.

Der Empfänger muss nicht nur die Daten analysieren, sondern vorher auch die Metadaten. Irgendeine Logik muss feststellen, ob die Daten überhaupt betrachtet werden sollten oder ob es einen Fehler gab (err/msg).

Das Wissen über Struktur und Bedeutung der Daten steckt also an mindestens zwei Stellen: In der Funktion und irgendwo außerhalb. Schlechtes Zeichen.

Im Moment ist das vielleicht kein Problem, alles ist noch recht überschaubar. Aber Code lebt, wächst und verändert sich. Demnächst willst du mehr als nur row zurückgeben oder noch irgendwelche Zustandsinformationen außer err. Was machst du dann? Erweiterst du die Logik, die $arr verarbeitet? Glaubst du, das du da in 5 Jahren noch durchsiehst? Oder ein Fremder?

Baue ein ordentliches Fehlerhandling ein, statt err und msg.
Kapsel die Daten und notwendiges Wissen darüber in Objekte.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Auf "externes" Array zugreifen - ohne "global"? carapau PHP Developer Forum 1 06-04-2008 04:58
bool Wert "false" obwohl er eigentlich "true" sein sollte :/ flowgrow Projekthilfe 5 22-03-2008 23:38
5x Praktikum: "Marketing" oder "Webdesign" o. "Kommunikation" ... transparent Jobgesuche 4 18-06-2007 17:02
Soap "Could not connect to host" "HTTP" Fehler. Funktioniert auf localhost aber Tormentor PHP Developer Forum 1 29-09-2006 15:26
Mysql einrtag bei <input type="submit" name="Submit" value="Posten" Mathes HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 05-07-2006 16:05

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:05 Uhr.