"Dynamisches Array", wichtig

  • PHP

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Link275.

    "Dynamisches Array", wichtig

    Guten Abend,
    ich hab heute versucht, mich in PHP mit Arrays auseinanderzusetzen.
    Habs soweit alles verstanden.
    Nur finde ich eines seltsam:
    In Visual Basic kann ich ja eine gewisse Menge an Arrays definieren,

    VB.NET-Quellcode

    1. Dim Int(1000) As Integer

    Nur wie geht das nun in PHP?
    Wie kann ich in PHP festlegen, dass ich 1000 mal vom jenem Datentyp haben möchte?

    Freue mich jetzt schon,
    In Visual Basic kann ich ja eine gewisse Menge an Arrays definieren,

    dass ich 1000 mal vom jenem Datentyp haben möchte?

    Das, was du meinst, ist wohl eher die Größe des Arrays.

    Gibt es in PHP so nicht. Arrays sind dynamisch und erst durch die INI-Einstellung memory_limit begrenzt. Wenn es darum geht, einen Array zu füllen, dann könnte das, was @Agita: gepostet hat, was sein.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Hab es wohl voreilig als erledigt markiert, sorry.
    Na, ich versuche gerade anhand PHP den KGV zweier Zahlen zu ermitteln, in VB tat ich es so:

    VB.NET-Quellcode

    1. Private List1I, List2I As New List(Of Double)
    2. Private Buffer1, Buffer2 As Integer
    3. Private Until As Integer
    4. Function Equivalency(List1 As List(Of Double), List2 As List(Of Double)) As Double
    5. For Each x In List1
    6. For Each y In List2
    7. If Integer.Equals(x, y) Then
    8. Return x
    9. Exit For
    10. End If
    11. Next
    12. Next
    13. End Function
    14. Function GetKGV(Integer1 As Integer, Integer2 As Integer) As Double
    15. Do Until Until = 10000
    16. Buffer1 += Integer1
    17. Buffer2 += Integer2
    18. List1I.Add(Buffer1)
    19. List2I.Add(Buffer2)
    20. Until += 1
    21. Loop
    22. Return Equivalency(List1I, List2I)
    23. End Function
    .
    Eine andere Möglichkeit gibt's ja nicht.Doch gibts, hab schon eine Idee.
    Ich prüf auf "Kollision", während sie sich addieren.
    Und in PHP gibt's keine List<>.
    Daher auch die Frage.
    Habs grad versucht, das Ergebnis,
    1200 Zeilen lange Fehlermeldung.
    ) ;

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „NGE'o“ ()

    vllt wäre es hilfreicher wenn du deinen php code anstatt den vb code posten würdest ? :P


    Dein VB Code --> PHP Code

    PHP-Quellcode

    1. <?php
    2. $list1i = array();
    3. $list2i = array();
    4. $buffer1 = 0;
    5. $buffer2 = 0;
    6. function equivalency($list1, $list2)
    7. {
    8. foreach($list1 as $x)
    9. foreach($list2 as $y)
    10. if ($x == $y)
    11. return $x;
    12. return false;
    13. }
    14. function getKGV($integer1, $integer2)
    15. {
    16. global $buffer1, $buffer2, $list1i, $list2i;
    17. for($i=0; $i<=10000; $i++)
    18. {
    19. $buffer1 += $integer1;
    20. $buffer2 += $integer2;
    21. $list1i[] = $buffer1;
    22. $list2i[] = $buffer2;
    23. }
    24. return equivalency($list1i, $list2i);
    25. }
    26. // test:
    27. if (($kgv = getKGV(123,45)) !== false)
    28. {
    29. echo "$kgv<br>";
    30. }
    31. else
    32. {
    33. echo "NIX GEFUNDEN";
    34. }
    35. if (($kgv = getKGV(123,45)) !== false)
    36. {
    37. echo "$kgv<br>";
    38. }
    39. else
    40. {
    41. echo "NIX GEFUNDEN";
    42. }

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Agita“ ()

    naja ick weis nich ganz genau was KGV is, oder was du mit der funktion machst, aber da sind einige sachen, die verbessert werden könnten :P

    zb wenn du das erste mal etwas in die listen packst und er was identisches findet, is alles ok
    aber alle weiteren hinzugefügten sachen zu den listen is unnötig, da er immer wieder das erste identische finden wird.
    daher auch 2 mal der selbe test.

    desweiteren solltest du auf performance/memory achten... php ist nicht vb ;)
    php hat begrenzt memory, php hat begrenzte laufzeit
    KGV = Kleinstes gemeinsames Vielfache
    KGV{27,9} = 27
    Weil 3*9 = 27 und 1 * 27 = 27 ist.

    Oder KGV{100,30}= 300, denn
    300 ist am "nächsten" zu 100 und 30.

    Hatte mal Lust zu sehen, wie sowas aussehen könnte.
    Der Code(VB-Code) ist aber echt **,2 Listen sind eig. nicht von Nöten, den Code verbessere ich noch.
    Nochmals Danke !
    kgV in VB.NET:

    VB.NET-Quellcode

    1. Public Function kgV(a As Integer, b As Integer) As Integer
    2. Return Math.Abs(a * b) \ ggT(a, b)
    3. End Function
    4. Public Function ggT(a As Integer, b As Integer) As Integer
    5. If a = b Then
    6. Return a
    7. ElseIf a < b Then
    8. Return ggT(a, b - a)
    9. Else 'a > b
    10. Return ggT(a - b, a)
    11. End If
    12. End Function

    Achtung untested ^^

    Die Funktion ggT geht natürlich auch als Einzeiler, gilt hier nut der Übersicht.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ThePlexian“ ()

    Das sehe ich nicht so, dafür kann es gute Gründe geben, bspw. Long Polling. Natürlich ist dann ein guter Server Pflicht, der die entsprechende Last aufnehmen kann.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Hi,

    wenn man soweit gekommen ist, dass man diese einstellungen ändern muss, dann macht man definitiv etwas falsch

    Generell hast du da recht. Für kein Programm braucht man die Einstellung normalerweise. Heißt aber nicht dass es eine sinnfreie oder "böse" Funktion ist. Beispielsweise für Backups ist es meist unerlässlich, und auch sonst immer dann wenn man im vornherein weiß, dass Aufgaben ausgeführt werden, die längere Ausführungszeiten erfordern. Ich hab's ja auch nur eingebracht, um zu zeigen, dass es ja natürlich schon Möglichkeiten gibt, die Laufzeitbegrenzung zu umgehen. Natürlich sollte diese Einstellung nicht dazu verwendet werden, um schlampig programmierte Skripte und dessen eventuell lange Ausführungszeiten zu "korrigieren".


    Link :thumbup:
    Hello World
    vllt hab ich mich auch falsch ausgedrückt... auch ich habs hinunwieder umgestelt, weil ich riesige dateien automatisch bearbeiten wollte. ändert aber nichts daran, dass es imo "falsch" ist :P man sollte es umgehen, ausser, man weiß was man tut, wie zb in dem beispiel von @Lukas

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agita“ ()

    Hi,

    ja, wie gesagt, normal braucht man's nicht, außer man weiß schon vorher, dass es nötig sein wird. Bezogen auf den Thread hier (und damit wieder BTT :rolleyes: ) ist diese Einstellung natürlich schmarrn.


    Link :thumbup:
    Hello World