PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wieviele Arrays .....


xtension
24.06.2002, 14:00:13
Mir stellt sich gerade die frage wieviele arrays man theoretisch (& auch rein praktisch) ineinander verschachteln kann.

2 & 3 Dimensionale Arrays funktionieren ...

aber 4D, 5D, 6D.... 10, 20... macht das überhaupt Sinn ????

mich würde wirklich interessieren was ihr mit arrays so anstellt
& wieviele ihr SINNVOLL verschachtelt habt

MfG xtension

|Coding
24.06.2002, 19:22:14
hi,

also ich hatte mal vie sinnvoll verschachtelt, aber das mach das script langsam wenn es zuviele werden, versuch es dann lieber zu splitten.

Matt
25.06.2002, 11:33:31
hi
mehr als zwei hatte ich noch nicht, allerdings ist das meiner meinung nach auch nicht notwendig, was ich mal hatte glaube ich, war ein array, dass in einer dimension ein assoziatives war und in der anderen ein normales ;)
du kannst beliebig viele verschachteln (zumindest annähernd) allerdings macht es nicht immer viel sinn.
ein beispiel wäre, wenn du die koordinaten von einer 3D Welle speichern willst: da hast du x/y/z koordinaten und noch eine zeitangabe.

Matt
26.06.2002, 19:34:35
?????????????????????????
Hunderte dimensionen?
Liest du gleichzeitig aus hunderten textdateien aus?
Das sind zwei dimensionen, wenn du was aus einer textdatei ausliest: x und y koordinate.

Dago
26.06.2002, 22:15:14
Ich hab Quatsch erzählt, sorry!

Dago
26.06.2002, 22:23:24
Also ich hab's grad nochmal nachgeprüft.
Wenn man es so macht, wie du (@ dbCF) es meinst, dann erhält man aber nur ein zweidimensionales Array:

Array
(
[0] => Array
(
[0] => Asd
[1] => fGh
[2] => jkL
[3] => Qwe
[4] => rTz
[5] => uiO
[6] => snafu
)

[1] => Array
(
[0] => fGh
[1] => jkL
[2] => Qwe
[3] => rTz
[4] => uiO
[5] => snafu
[6] => Asd
)

[2] => Array
(
[0] => jkL
[1] => Qwe
[2] => rTz
[3] => uiO
[4] => snafu
[5] => Asd
[6] => fGh
)

[3] => Array
(
[0] => Qwe
[1] => rTz
[2] => uiO
[3] => snafu
[4] => Asd
[5] => fGh
[6] => jkL
)

[4] => Array
(
[0] => rTz
[1] => uiO
[2] => snafu
[3] => Asd
[4] => fGh
[5] => jkL
[6] => Qwe
)

[5] => Array
(
[0] => uiO
[1] => snafu
[2] => Asd
[3] => fGh
[4] => jkL
[5] => Qwe
[6] => rTz
)

[6] => Array
(
[0] => snafu
[1] => Asd
[2] => fGh
[3] => jkL
[4] => Qwe
[5] => rTz
[6] => uiO
)

)

Also so wie Matt es sagte...

Matt
26.06.2002, 23:32:20
an dbCF
ich hab schon verstanden, was du meinst, nur ein 7 dimensionales array könnte so aussehen:

$array[1][3][3][7][9][5][3]

und ich könnte dir nicht mal sagen, was die 7. dimension ist, und vorstellen könnte ich mir diesbezüglich auch nichts.
die dimensionen eines arrays geben an, wie viele koordinatenachsen man benötigen würde, um einen wert darzustellten bzw. abzulesen und im falle einer datei wie deiner sind das höchstens zwei, nämlich x und y

also:
Asd#fGh#jkL#Qwe#rTz#uiO#snafu
fGh#jkL#Qwe#rTz#uiO#snafu#Asd
jkL#Qwe#rTz#uiO#snafu#Asd#fGh
Qwe#rTz#uiO#snafu#Asd#fGh#jkL
rTz#uiO#snafu#Asd#fGh#jkL#Qwe
uiO#snafu#Asd#fGh#jkL#Qwe#rTz
snafu#Asd#fGh#jkL#Qwe#rTz#uiO

Asd hätte die koordinatenwerte 0/0 (0te zeile, 0te spalte) und uio hätte die werte 6/6 (6te zeile, 6te spalte) somit hat man zwei dimensionen.

Dago
27.06.2002, 00:03:46
Wäre dies hier nicht ein fünf-dimensionales Array?


Array
(
[0] => Array
(
[0] => Array
(
[0] => Array
(
[0] => Array
(
[0] => 5. Dimension
)
[1] => 4. Dimension
)
[1] => 3. Dimension
)
[1] => 2. Dimension
)
[1] => 1. Dimension
)


Das könnte man immer so weiterführen... nur hat das wohl wenig Sinn in unserem 3-dimensionalen Universum

xtension
27.06.2002, 10:11:25
@Dago

Jupp das wäre eins....

Aber über Sinn oder Unsinn deines "5D" Arrays, entscheiden doch einzig und allein die Daten die du damit strukturierst.

Ob es allerdings von der rein technischen Seite Sinn macht ist die andere Frage, wie |Coding weiter oben schrieb wäre das Script dann langsam, was allerdings nicht an der Logik des Arrays nichts ändert, das liegt einzig und allein an PHP (bzw. an Server).

Nebenbei leben wir in keinem 3D-Universum das bezieht sich lediglich auf das Räumliche, wir haben aber noch die Zeit, und div andere Kräfte.

_____________________________________

"Das Raum-Zeit-Kontinuum wird geboren, lebt und stirbt im selben Augenblick, Captian...."

Lt.-Com. Data U.S.S Enterprise

|Coding
27.06.2002, 18:35:34
hi,

um hier nichts falsches zusagen, wir leben sehr wohl in einem 3D universum, das heißt in 2 verschiedenen 3D universen.

1. Zeit:

1.1 dimension ist die vergangenheit
1.2 dimension ist die gegenwart
1.3 dimension ist die zukunft


2. Raum:

2.1 dimension ist die länge
2.2 dimension ist die breite
2.3 dimension ist die höhe

und mehr ist da nicht, es gibt also 3 zeitdimensionen und 3 raumdimensionen

Progman
27.06.2002, 19:07:17
3 Zeitdimensionen? Die Zeit gibt es für mich nur in 1 Dimension. Vor und zurück. Das mit dem Raum ist richtig, 3 Dimensionen.

Aber wir können uns halbwegs auch eine 4. Dimension vorstellen, wenn wir zu den Raum mit den 3 Dimensionen noch die Zeit hinzunehmen. Ist aber alles sehr Theoretisch

Dago
27.06.2002, 19:33:10
Hm.. Wenn die Zeit nur Vor und Zurück ist, was ist dann das JETZT?!

Übrigens stelle ich mir die 4. (Raum-) Dimension so vor:

Ein Objekt soll von Punkt A nach Punkt B auf der 4. Dimension bewegt werden.
In der 3D-Welt können wird die Start- und Ziel-Koordinaten erkennen... aber nicht den Weg, den das Objekt während seiner Reise zu Punkt B zurücklegt. Der Gegenstand verschwindet (für uns) also auf dem Weg zu Punkt B und erscheint erst wieder, wenn er sein Ziehl erreicht hat.

Erklärung:
Stellt euch mal eine 2D-Welt vor, die nur Länge und Breite kennt aber keine Höhe.
Jetzt manipulieren diese Welt, indem wir ein Objekt, auf unserer 3. (Raum-) Dimension (Höhe), aus der 2D-Welt heraus nehmen und an einem anderen Punkt wieder einsetzen... Für den 2D-Beobachter würde das Objekt in diesem Moment auch verschwinden.


Irgendwie bin ich vom Thema abgekommen... :-S

xtension
27.06.2002, 20:41:28
@|Coding...

Zeit & Raum stehen in einem unmittelbaren Zusammenhang man kann sie nicht trennen (oder man sollte es zu mind. nicht ;-) ).

Zumal ich der Meinung das die Zeit nur eine Achse hat, damit (die Zeit allein genommen) Eindimensional ist. Entweder Vergangenheit oder Zukunft.

@Dago...

Das JETZT gibt es nicht !!!!
Die Gegenwart ist ein rein theoretischer Zustand.
Ein Ereignis liegt entweder in der Zukunft oder in der Vergangenheit.

Da es hier um Daten geht, kann man doch eigentlich annehmen das ein Datensatz in unendlich (!Achtung extrem theoretisch!) viele Dimensionen verteilen lässt.

Die Grundlage der dessen ist, die Art wie man sie zuordnet, das Internet (z.B.:) könnte man in tausende Dimensionen einordnen.
Nach Thema, nach Art der Server auf denen die Daten liegen (UNIX, MS-Server), nach Art der benutzten Technologien (HTML, PHP, XML, FLASH, die Mixformen usw.).

Was ich damit meine, es ist alles eine Frage der Zuordnung und der Sichtweise, irgendjemand hat mal fest gelegt das das Universum 3 Dimes. ist und wir glauben das, aber früher hat man auch geglaubt die Erde wäre eine Scheibe und würde sich um die Sonne drehen.

...ich glaube sogar Prof. Stehpen Hawkins hat mal ein Buch darüber geschrieben...

|Coding
27.06.2002, 22:30:49
Original geschrieben von xtension
@|Coding...

@xtension :-)


Original geschrieben von xtension
Zeit & Raum stehen in einem unmittelbaren Zusammenhang man kann sie nicht trennen (oder man sollte es zu mind. nicht ;-) ).

wieso sollte man zeit und raum nicht trennen können oder dürfen?

was machst du b.z. mit ner uhr?
- dein zimmer zu verschiedenen zeiten ausmessen (raum)?


Original geschrieben von xtension
Zumal ich der Meinung das die Zeit nur eine Achse hat, damit (die Zeit allein genommen) Eindimensional ist. Entweder Vergangenheit oder Zukunft.......

teilweise kann ich dir zustimmen, das es eigendlich nur zukunft bzw. vergangenheit gibt, entweder - oder (das ist immer so, egal in welcher hinsicht), aber das die zeit eindimensional ist, stimmt nicht, denn es gibt nun mal DREI dimensionen gegenwart, vergangenheit und zukunft. wie willst du die auf eine achse bringen? irgendwie kann das nicht gehen. by the way was soll dann aus dem film "zurück in die zukunft werden"? den hab ich immer gern geguckt :-)

noch was anderes.... eigendlich konnte mann ja auch sagen, "wir leben in der vergangenheit"....

Matt
27.06.2002, 22:32:34
man (ich?) kann nicht sagen, wie viele dimensionen unser universum hat, allerdings ist Zeit nur eine davon, das jetzt wäre einfach f(t)=jetzt, allerdings, wie schon bemerkt wurde, ist das jetzt schon in dem moment vergangen, in dem es erfasst wurde.

xtension:
meiner meinung stimmt diene theorie allerdings auch nicht, denn was du meinst, ist 2 dimensional:

seite;note des aussehens;technik dahinter;
www.selfphp.info;3,php
www.microsoft.com,2,asp
.
.
.

und das ist eigentlich gesehen 2 dimensional, oder?

xtension
28.06.2002, 09:12:52
@Matt

wie ich bereits sagte das kommt ganz auf persönliche Sichtweise an

>Unix, MS & andere...

könnte man als eine Dimension sehen (wobei die Unix-Dimension gigantische wäre ;-) )

>Inhalt und Aussehen...

wäre eine weitere Dimension, denn sie steht zwar in Verbindung mit der ersten ist aber unabhängig von ihr...

>Die Technik (html, php, usw. )

Wäre eine dritte, da Sie ebenfalls in Relation, aber nicht in Abhängigkeit zu den ersten beiden steht...

@|Coding

Die Zeit muss eindimensional sein...
Weil:

In einem Raum, kanns du verschiedene Positionen einehmen..
Abhängig von Höhe, Breite, Tiefe.... => 3 Dimensionen

In Zeit nimmst du nur eine Position ein, nähmlich die aktuelle, und selbst die ist nicht wirklich existent entweder sie liegt in der Zukunft oder in der Vergangenheit deshalb bewegen wir uns in der Zeit vorwärts, wir können sie weder anhalten noch in ihr zurückgehen, in der Zeit bewegen wir uns auf einer Linie in eine Richtung...

Und das Raum & Zeit in einem unmittelbaren Zusammenhang stehen ist meines erachtens nach erwiesen, denn der Raum verändert sich mit fortschreitender Zeit...

Siehe, die Ausdehnung des Universum vom Urknall an...

Gruss der Multidimensionale xtension

markus.thiede
05.07.2002, 23:21:32
Also wenn man zum beispiel mal nen Verzeichnisbaum ansieht der kommt schnell mal auf 10 -12 Unterverzeichnisse wenn man den Jetzt in ein Array packt ist man also schnell bei 10-12 'Dimensionen'.

Denkt also nicht nur Räumlich !

|Coding
05.07.2002, 23:25:05
haben wir ja auch nicht, wir sind nur etwas vom eingentlichen thema abgekommen :-)

und das man schnell an soviele dimensionen kommt, haben wir ja oben irgentwo schon erwähnt.

markus.thiede
05.07.2002, 23:29:19
die diskusion gehört glaub ich eher auf
http://kworkquark.desy.de

Nix für Ungut.

|Coding
05.07.2002, 23:31:23
ne, wir bleiben in unseren schönen SELFPHP-räumen :-)

Matt
06.07.2002, 10:12:09
nein, meiner meinung nach hat das keine 12 dimensionen, sondern wieder nur drei:
id des ordners
name des ordners
id des übergeordneten ordners
ausserdem spricht man hierbei von einer baumstruktur, was wieder dimensionslos wäre, sondern eine parent/child beziehung

markus.thiede
06.07.2002, 12:24:23
aber im Array sähe das bei mir so aus

$ordner['C:']['Programme']['Php'].... und so weiter ...['Letzter ordner'] = Text.txt.

Matt
06.07.2002, 13:44:32
geht aber so nicht!
da hättest du pro dimension etwa (anz. der datensätze pro dimension)^(anz d. datensätze)^3 zugriffsverletzungen!
schließlich wenns den eintrag
$arr["c"]["programme"]["php"]
gibt, gibts ja auch den eintrag
$arr["c"]["widows"]["php"]
und er wäre in php völlig gültig, dafür gäbe es den eintrag
$arr["c"]
oder
$arr["c"]["winnt"]
garnicht, wiel du immer alle dimensionen angeben müsstest.
das sind keine dimensionen, wie schon gesagt, weil du musst dich auf jeder achse weiterbewegen können, ohne dass die gesamte struktur gestört wird.
sowas wäre: du kannst nach links und recht sowohl schräg nch oben als auch schräg nach unten gehen, das ganze funktioniert vorwärts und rückwärts. => 2 Dimensionen

markus.thiede
06.07.2002, 14:12:23
Darum sollte man bei Arrays auch nicht von Dimensionen sprechen. das ganz ist eher ein Baum.

|Coding
06.07.2002, 15:02:56
hi,

bei arrays spricht man aber von dimensionen und das wird sich auch sicher nicht ändern.

Matt
06.07.2002, 15:03:09
nein, arrays können dimensionen haben, beispiel ist ein 2D Punkt, jeder punkt auf der x und y koordinate kann einen wert haben, da wir das ganze in 2D machen, sagen wir true oder false.
wenn $arr[x][y] also true ist, ist an der stelle x/y ein punkt.
diese punkte haben keinerlei abhängigkeiten voneinander(ausser hineininterpretierte - z.b. linien, kreise,...) und somit ist jeder punkt gültig.

markus.thiede
06.07.2002, 18:25:55
Du stelltst dir dein array also so vor
+-1-+-2-+ X
1 1 | 2 |
+---+---+
2 3 | 4 |
+---+---+
Y

ich bevorzuge diese darstellung
X Y
1 ->1 = 1
1 ->2 = 2
2 ->1 = 3
2 ->2 = 4

Die Dimension kann man sich also auch nur rein interpretieren
die sind namlich nicht da
amn kann das auch so schreiben | 1 2 | 3 4 |

Matt
06.07.2002, 18:51:27
schon, nur sind arrays modelle, und so, wie du auf sie zugreifst, stellen sie eine n-dimensionale tabelle dar, wenn man es genau nimmt, liegen die dinger im speicher so drin:
1234
(adressierung ist dann wo anders)
(um dein Beispiel zu erweitern)
und so könntest du genauso sagen, dass ein array gar keine dimension, und auch keine kinder hat.
man geht von modellen aus, eine einfache if-abfrage ist ja auch nur das modell von ca. 10 oder weiss ich wie vielen Maschinencodeschritten, die da abgearbeitet werden, nur damit wir mit dem programmieren auch mal fertig werden, und da kein normaler mensch ein großes projekt in maschinencode aufziehen könnte (aus übersichtsgründen) haben wir uns modelle geschaffen, die uns das ganze vereinfachen. Solche modelle sind Programmiersprachen, und dazu könnte man hierbei php mal zählen, auch wenns keines ist, liegt php doch die ausführung in C zugrunde.
Auch eine dimension ist ein modell, dass uns das verständniss einer höheren ordnung, die wir nicht durchschauen können bringen soll (oder so ähnlich)
da wir beide modelle im allgemeinen als gültig akzeptieren und das eine modell das andere modell beinhält sollten wir das (da wir ja beide modelle auch benutzen) als gegeben betrachten. insofern kann man also getrost sagen: ein array hat dimensionen.

Stimmt das, oder hab ich irgendwo einen schweren denkfehler?

|Coding
06.07.2002, 18:55:26
also ich muss zugeben mittlerweile hab ich keinen durchblick mehr :-)

markus.thiede
06.07.2002, 20:58:50
Einigen wir uns darauf das wir in unseren Programmen in ein Array Dimensionen hinein interpretieren.
Der rest ist Glaub ich alles eine Frage des Standpunktes.
Zu Assembler ist zu sagen das sie die einzige für den Rechner
verständliche Sprache ist.
Deshalb muß auch jeder Code einer Abstraktionssprache in
Assembler übersetzt werden.
Bei C macht das ein Compiler und bei PHP ein Interpreter.

Aber eine Frage stellt sich mir Warum sollte der PHP Interpreter den PHP Code zuerst in C code übersetzen ? Ist doch viel zu umständlich.

(Das der interpreter zuerst nen Zwischencode erzeugt bevor er Assembler draus macht weis ich aber das is bestimmt nich C)

Matt
06.07.2002, 21:23:04
ich hab ehrlich gesagt keine ahnung, wie das bei der ZEND engine ist, jedenfalls war es im ursprünglichen PHP so, soweit ich weiss.

Matt
06.07.2002, 21:24:47
aja: PHP macht KEINEN zwischencode daraus, denn sonst wäre es eine programmiersprache, wie das PERL ist, denn dort ist es tatsächlich möglich eine "halbbinäre" version zu erzeugen, dies ist in PHP meines wissen nach nicht eingeplant, in ASP.net allerdings schon. vorteil von dem ganzen ist, eine schnellere durchlaufzeit des scriptes, da der erste interpretervorgang entfallen würde.

markus.thiede
06.07.2002, 22:36:56
Also Perl arbeitet definitiv über einen Zwischencode jedoch ist es nicht vorgesehen diesen Zwischencode wie bei java zu exportieren.
Vorteil des Zwischencodes ist, das der gesamte Interpretationsvorgang beschleunigt wird.
Und das eigentliche Skript nicht die ganze zeit vom Interpreter in Beschlag genommen wird. Und ich vermute (was weiss man den schon wirklich) das PHP genauso arbeitet.

Matt
06.07.2002, 22:58:25
Der Interpreter arbeitet zweischichtig, die erste schicht ersetzt variablen durch deren inhalt, fügt include dateien ein usw, die zweite schicht arbeitet das script dann ab. Dadurch ist es möglich, dass du variable funktionsaufrufe und variable variablen realisieren kannst. deshalb kannst du bei php auch keine zwischenscript dateien verwenden um das script zu beschleunigen, da diese aufgrund der inneren architektur von PHP einfach nicht möglich sind.
diese dinge haben allerdings den nachteil, dass sie katastrophal schlechten programmierstil zulassen. beispiel für ein page-system:

<?
/*datei: script.php, seite wird in der variable $page übergeben, gehen wir davon aus, dass register_globals an ist, der einfachheit halber.
*/

$page();

function mainpage()
{
print "das ist die hauptseite";
}

function secondpage()
{
print "noch ne seite!";
}
?>

ob mainpage oder secondpage aufgerufen wird, entscheidet die GET variable page, jetzt gibt irgendwer script.php?page=print%20phpinfo
an und schon sieht er sämtliche informationen über die PHP distribution.
wie gefährlich das ist, darüber lässt sich jetzt streiten.

markus.thiede
06.07.2002, 23:14:11
Klingt überzeugend lassen wirs dabei.