ich will mir Usernamen generieren lassen, die natürlichsprachigen
Mustern folgende müssen.Dafür brauche ich einen Datentypen bzw. eher
eine Datenstrukur, die mir neben einem Haufen Strings zu jedem String
binäre Eigenschaften speichert. Es geht halt darum, dass
Beispielsweise "ck" nicht am Anfang stehen darf, das bekäme dann die
binäre Eigenschaft "NOBEGIN".Will ich Arrays nehmen?
Danke
Michael
> Will ich Arrays nehmen?
Ich will mal noch die Intention meiner Nachfrage nennen:
Platzverbrauch. Sei n = die Anzahl der Strings. Kann ich mit PHP ein
[n,2]-Array anlegen, wobei die Elemente x,y = [string,int] sind? (ich
würde dann halt die Eigenschaften in ein INT packen). Würde PHP dann
den kompletten Platz belegen?
Weitere Intention: Ich will mich nicht unbedingt mit Listen inm PHP
befassen.
> On 8 Feb., 10:57, Michael Scheer <bockb...@gmail.com> wrote:
>
> Ich will mal noch die Intention meiner Nachfrage nennen:
> Platzverbrauch. Sei n = die Anzahl der Strings. Kann ich mit PHP ein
> [n,2]-Array anlegen,
PHP kennt keine Arrays mit fester Gr��e. Diese ergibt sich erst zur
Laufzeit, indem Du Elemente hinzuf�gst und/oder entfernst.
PHP kennt auch keine mehrdimensionalen Arrays. Solche baut man sich als
Arrays aus Arrays zusammen. Diese Schachtelung kann man beliebig tief
fortsetzen.
> wobei die Elemente x,y = [string,int] sind?
PHP kennt keine statische Typisierung. Der Typ einer Variablen oder
eines Array-Elements ergibt sich zur Laufzeit und kann jederzeit wieder
ge�ndert werden.
> W�rde PHP dann
> den kompletten Platz belegen?
Die Frage verstehe ich nicht.
> Weitere Intention: Ich will mich nicht unbedingt mit Listen inm PHP
> befassen.
Was meinst Du mit "Listen"?
Gru�. Claus
> ich will mir Usernamen generieren lassen, die nat�rlichsprachigen
> Mustern folgende m�ssen.Daf�r brauche ich einen Datentypen bzw. eher
> eine Datenstrukur, die mir neben einem Haufen Strings zu jedem String
> bin�re Eigenschaften speichert. Es geht halt darum, dass
> Beispielsweise "ck" nicht am Anfang stehen darf, das bek�me dann die
> bin�re Eigenschaft "NOBEGIN".Will ich Arrays nehmen?
Zuerst einmal m�chtest Du Dir angew�hnen, nach dem Punkt am Satzende ein
Leerzeichen einzuf�gen. Das erleichtert uns das Lesen Deiner Postings.
Datenstrukturen, wie man sie aus C kennt, gibt es in PHP nicht. Ich
w�rde Dir statt dessen empfehlen, entsprechende Klassen und Objekte zu
definieren. Daraus kannst Du Dir dann passende Arrays zusammenbauen.
Falls Du mit OO auf Kriegsfu� stehst, kannst Du Dir einfache Klassen
ohne eigene Methoden definieren und alles auf "public" setzen. Diese
kannst Du dann wie Strukturen missbrauchen.
Gru�. Claus
Du meintest am 08.02.10:
>> Will ich Arrays nehmen?
> Ich will mal noch die Intention meiner Nachfrage nennen:
> Platzverbrauch. Sei n = die Anzahl der Strings. Kann ich mit PHP ein
> [n,2]-Array anlegen, wobei die Elemente x,y = [string,int] sind?
Wie schon von Claus erw�hnt: was PHP "Array" nennt, ist kein "Array"
("Matrix") im klassischen Sinn, also z.N. ein (festes) Feld mit n*2
Pl�tzen, die per Index zu adressieren sind.
Ist eher ein Baum mit vielen �sten, und von jeden Ast gehen Zweige ab,
und von jedem Zweig gehen Zweige ab, ...
Viele Gruesse!
Helmut
> Zuerst einmal möchtest Du Dir angewöhnen, nach dem Punkt am Satzende ein
> Leerzeichen einzufügen. Das erleichtert uns das Lesen Deiner Postings.
Vertipper, sorry. Ich kenne die Regeln.
Im anderen Posting schriebst Du "PHP kennt keine Arrays mit fester
Größe. Diese ergibt sich erst zur Laufzeit, indem Du Elemente
hinzufügst und/oder entfernst." - Das ist der entscheidende Hinweis;
ich werde Arrays nehmen.
> Falls Du mit OO auf Kriegsfuß stehst, kannst Du Dir einfache Klassen
> ohne eigene Methoden definieren und alles auf "public" setzen. Diese
> kannst Du dann wie Strukturen missbrauchen.
Ich behalte es im Hinterkopf.
[Aus dem anderen Posting]
> > Würde PHP dann den kompletten Platz belegen?
> Die Frage verstehe ich nicht.
Na ja, gemeint war eben genau das Gegenteil zu "Größe ergibt sich erst
zur Laufzeit". -> "Platz wird sofort allokiert"
Bzgl. Typisierung danke für den Hinweis. Mir war zumindest klar, dass
PHP Typen zur Laufzeit anpasst (ich nahm aber an, dass man Typen auch
fest zuordnen kann), ich habe immer vorsichtshalber selber gecastet,
dann weiß man, was man hat.
PHP gefällt mir ganz gut was Stringbehandlung angeht. Gerade sowas
hübsches wie substr($var, -1, 1) entdeckt :-)
> > Weitere Intention: Ich will mich nicht unbedingt mit Listen inm PHP
> > befassen.
>
> Was meinst Du mit "Listen"?
Na ja, Listen halt, mit Objekten und Zeigern.
Sowas: http://de.wikipedia.org/wiki/Datenstruktur#Liste
> Wie schon von Claus erwähnt: was PHP "Array" nennt, ist kein "Array"
> ("Matrix") im klassischen Sinn, also z.N. ein (festes) Feld mit n*2
> Plätzen, die per Index zu adressieren sind.
>
> Ist eher ein Baum mit vielen Ästen, und von jeden Ast gehen Zweige ab,
> und von jedem Zweig gehen Zweige ab, ...
Danke, jetzt ist das klarer. Ich bin zunächst mit klassischer Array-
Denkweise in http://de2.php.net/manual/de/language.types.array.php
hineingegangen und wurde zunächst mal sehr verwirrt :-)
Michael
Ich denke schon, ja.
Mit Strukturen wie:
| $input = array(
| 'data' => 'Mein gewählter Username',
| 'NOBEGIN' => true,
| 'NOABC' => true,
| 'NODEF' => true,
| [...]
| 'NOXYZ' => true
| );
|
| $checklist = array(
| 'NOBEGIN' => array(
| 'regexp' => '^ck',
| 'message' => '"CK" darf nicht am Wortanfang stehen'
| ),
| 'NOABC' => array(
| 'regexp' = '[12345]{3}[67890]{3}',
| 'message' => 'Fehler bei seltsamer Pruefung'
| )
| )
ergibt sich dann recht uebersichtlicher Code bei der Pruefung der
einzelnen Bedingungen. Wenn es komplexer wird, als hier skizziert,
koennte die Verwendung von Objekten eine Ueberlegung wert sein.
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike
Das süße Geheimnis! Stefan, gegen die Stunden des Wahns!
(Sloganizer)
> Claus Reibenstein wrote:
>> Was meinst Du mit "Listen"?
>
> Na ja, Listen halt, mit Objekten und Zeigern.
> Sowas: http://de.wikipedia.org/wiki/Datenstruktur#Liste
Ich glaube Du denkst viel zu typisiert. Arrays werden in PHP f�r alles
m�gliche genutzt. seien es nun List, HashMaps etc. Aber halt alles in
absolut ungebundener Typisierung.
Ne Liste ist einfachst in PHP:
$list = array('Eins', false, 14);
$list[] = -.4;
Das bezeichnet man dann wiederum als numerisch indiziertes Array.
Arraykeys k�nnen aber auch Zeichenketten sein, was dann wohl einer
HashMap u.�. gleich zu setzen w�re und als assoziatives Array bezeichnet
wird.
Zuguter letzt kannst Du das alles auch mixen wie es gerad past.
Und wenn Du eine Klasse definierst, die z.B. die Schnittstelle
'ArrayAccess' implementiert hast Du ein Objekt, das wie ein Array genutzt
werden kann.
MfG, Ulf