Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] array als PHP-CODE aufgeben.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] array als PHP-CODE aufgeben.

    ich will einen array als code ausgeben.
    in der variable "array('A','B','C');" oder "array();" stehen.

    Weiss jemand, wie ich das hier besser lösen könnte? Gibt's ev. eine Funktion?
    Hier der mein Code der das macht. (Habe ihn vor 3 Jahren gemacht.)

    ein einzeiler wär mir aber lieber

    PHP-Code:
    $my  = array('A','B','C');
    echo 
    save_array$my );


    function 
    save_array($input_array)
    {
        
    $tmp 'array(';

        
    $flag 0;
        foreach(
    $input_array as $x)
        {
            if(
    $flag == 0){$flag 1;} else {$tmp .= ", ";}
            
    $tmp .=  "'".$x."'";
        }
        return 
    $tmp.');';

    erzeugt die ausgabe:
    PHP-Code:
    array('A','B','C'); 
    www.scriptforums.com - Foren für Skripts
    www.ragonvote.net - Kostenlose Umfragen
    www.ragonsoft.com - PHP und Android Apps (z. B. Knoten Video Guide)

  • #2
    Ich würde das so lösen

    PHP-Code:
    $my  = array('A','B','C');
    echo 
    save_array$my );


    function 
    save_array($input_array) {
        if (empty(
    $input_array)) {
            return 
    'array();';
        }

        return 
    "array('".implode("', '"$input_array)."');";

    EDIT: es gibt doch eine Funktion, siehe unten [MAN]var_export[/MAN]

    mfg Tobby

    Kommentar


    • #3
      schau dir einmal var_export() an.

      Kommentar


      • #4
        Zitat von Papst Beitrag anzeigen
        schau dir einmal var_export() an.
        ja experimentiere gerade mit var_export()...nur wills noch nicht so wie ich )

        wie ihr euch denken könnt, soll am ende die zeile in ein config-file geschrieben werden, und wieder gelesen. simuliere das hier schnell mit eval.
        var_export will im moment noch nicht recht.

        PHP-Code:
        $w1  = array('A','B','C');
        $w2 $w1;


        $w1 save_array$w1 );
        $w2 var_export$w2 );


        eval(
        '$w1 = '.$w1);
        eval(
        '$w2 = '.$w2.';');  

        echo 
        'W1: '.$w1[0].$w1[1].$w1[2].'<hr>';
        echo 
        'W2: '.$w2[0].$w2[1].$w2[2].'<hr>'
        www.scriptforums.com - Foren für Skripts
        www.ragonvote.net - Kostenlose Umfragen
        www.ragonsoft.com - PHP und Android Apps (z. B. Knoten Video Guide)

        Kommentar


        • #5
          Zitat von advanced_phpler Beitrag anzeigen
          var_export will im moment noch nicht recht.
          Du glaubst nicht ernsthaft, dass irgend jemand hier mit so einer Aussage was anfangen könnte ...


          Bitte beschreibe dein Problem nachvollziehbar - und zwar dein wirkliches Problem.
          [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

          Kommentar


          • #6
            Was steht denn gerade in save_array() ?!

            vom Prinzip ist es doch ganz einfach..

            PHP-Code:
            $array = array('a' => 'b''c' => 'd' /*....*/);

            $saveArray var_export($arraytrue);

            echo 
            '$saved = ';
            echo 
            $saveArray

            Kommentar


            • #7
              Zitat von ChrisB Beitrag anzeigen
              Bitte beschreibe dein Problem nachvollziehbar - und zwar dein wirkliches Problem.
              PHP-Code:
              array ( => 2=> 3=> 3, ) 
              und daher gehts nicht. wegen dem ,,,, am schluss.

              tobys-idee klappt ganz gut... (habs einfach meinem stil+worten angepasst.)
              PHP-Code:
              function save_array2($input_array) { 
                  if (empty(
              $input_array)) { return 'array();';} 
                  return 
              'array(\'' .  join("', '"$input_array)."');";

              verstehe nicht warum var_export, da ein koma anhängt

              mist....
              PHP-Code:
              $w1  = array('A','B','C');
              $w2 $w1;

              $w1 save_array$w1 );
              $w2 var_export$w2 );

              $w1 '$w1 = '.$w1.';';
              $w2 '$w2 = '.$w2.';';

              eval(
              $w1);
              eval(
              $w2);

              echo 
              '<hr>';
              echo 
              'W1: '.$w1[0].$w1[1].$w1[2].'<hr>';
              echo 
              'W2: '.$w2[0].$w2[1].$w2[2].'<hr>';

              exit;


              function 
              save_array($input_array) { 
                  if (empty(
              $input_array)) { return 'array();';} 
                  return 
              'array(\'' .  join("', '"$input_array)."');";


              Parse error: syntax error, unexpected ';' in W:\www\ragonsoft\test.php(14) : eval()'d code on line 1
              www.scriptforums.com - Foren für Skripts
              www.ragonvote.net - Kostenlose Umfragen
              www.ragonsoft.com - PHP und Android Apps (z. B. Knoten Video Guide)

              Kommentar


              • #8
                Zitat von advanced_phpler Beitrag anzeigen
                Parse error: syntax error, unexpected ';' in W:\www\ragonsoft\test.php(14) : eval()'d code on line 1
                Interessant wäre noch welcher eval-Aufruf das verursacht. Der erste oder der zweite Aufruf?
                Aber du kannst ja einfach mal $w1 und $w2 testweise ausgeben lassen.

                EDIT: Ich weiß warum. In der funktion save_array() wird das ";" schon hinten dran gehängt. Die Zeile
                PHP-Code:
                $w1 '$w1 = '.$w1.';'
                müsste dann so aussehen
                PHP-Code:
                $w1 '$w1 = '.$w1
                mfg Tobby

                Kommentar


                • #9
                  *räusper*

                  Schau dir var_export() mal im Manual an. Schau dir das Beispiel an, welches ich geschrieben habe...
                  So funktioniert es natürlich nicht!

                  Kommentar


                  • #10
                    Zitat von Tobby Beitrag anzeigen
                    Interessant wäre noch welcher eval-Aufruf das verursacht. Der erste oder der zweite Aufruf?
                    der mit var_export natürlich... meine version klappt schon...


                    @Papst:
                    Link?


                    jetzt gehts... wenn auch mit rumgepatche.
                    PHP-Code:
                    $w1  = array('A','B','C'); $w2 $w1;



                    $w1 save_array$w1 );
                    $w2 var_export_patched $w2 );

                    $w1 '$w1 = '.$w1;
                    $w2 '$w2 = '.$w2.';';

                    echo 
                    $w1.'<hr>';
                    echo 
                    $w2.'<hr>';

                    eval(
                    $w1);
                    eval(
                    $w2);
                    echo 
                    'W1: '.$w1[0].$w1[1].$w1[2].'<hr>';
                    echo 
                    'W2: '.$w2[0].$w2[1].$w2[2].'<hr>';

                    exit;


                    function 
                    var_export_patched($input_array) { 
                        
                    $tmp preg_replace ('/\n/s''',  var_export$input_arraytrue ) ); //Das komma macht mich sauer!
                        
                    return preg_replace ('/,\)/s'')',  $tmp ); //Das komma macht mich sauer!
                    }  



                    function 
                    save_array($input_array) { 
                        if (empty(
                    $input_array)) { return 'array();';} 
                        return 
                    'array(\'' .  join("', '"$input_array)."');";

                    Ergibt:
                    $w1 = array('A', 'B', 'C');
                    $w2 = array ( 0 => 'A', 1 => 'B', 2 => 'C');
                    W1: ABC
                    W2: ABC
                    www.scriptforums.com - Foren für Skripts
                    www.ragonvote.net - Kostenlose Umfragen
                    www.ragonsoft.com - PHP und Android Apps (z. B. Knoten Video Guide)

                    Kommentar


                    • #11
                      Zitat von advanced_phpler Beitrag anzeigen
                      der mit var_export natürlich... meine version klappt schon...
                      Da du allerdings das ";" bei dem anderen eval rausgelöscht hast, strafe ich deine Worte lügen


                      Zitat von advanced_phpler Beitrag anzeigen
                      @Papst:
                      Link?
                      PHP Manual: PHP: var_export - Manual


                      Allerdings verstehe ich dein Problem nicht...
                      PHP-Code:
                      <?php
                      $arr 
                      = array('a''b''c');

                      eval(
                      '$test = '.var_export($arrtrue).';');

                      var_dump$test);

                      ?>
                      Ausgabe:
                      Code:
                      array(3) {   [0]=>   string(1) "a"   [1]=>   string(1) "b"   [2]=>   string(1) "c" }
                      Da sind keine falschen Kommas, Semikolons o.ä.

                      Kommentar


                      • #12
                        Zitat von Tobby Beitrag anzeigen
                        EDIT: Ich weiß warum. In der funktion save_array() wird das ";" schon hinten dran gehängt.
                        richtig, war auch ein fehler aber var_export, macht \n und , rein wo es leider stört. bzw. zur schönen "darstellung"...
                        www.scriptforums.com - Foren für Skripts
                        www.ragonvote.net - Kostenlose Umfragen
                        www.ragonsoft.com - PHP und Android Apps (z. B. Knoten Video Guide)

                        Kommentar


                        • #13
                          *seufz* Ich bat dich gerade, dich präzise auszudrücken - und du kommst schon wieder mit so einem Murks ...

                          Zitat von advanced_phpler Beitrag anzeigen
                          PHP-Code:
                          array ( => 2=> 3=> 3, ) 
                          und daher gehts nicht. wegen dem ,,,, am schluss.
                          Was „geht nicht“?

                          Du hast noch nicht mal beschrieben, was du eigentlich erreichen willst - dann von „geht nicht“ zu sprechen, ist ziemlich blödsinnig.

                          Wenn du dich selbst als „fortgeschritten“ bezeichnest - dann untermauere das bitte auch, in dem du Problembeschreibungen lieferst, die diese Bezeichnung auch verdienen.
                          [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                          Kommentar


                          • #14
                            Zitat von Papst Beitrag anzeigen
                            Da du allerdings das ";" bei dem anderen eval rausgelöscht hast, strafe ich deine Worte lügen
                            Da sind keine falschen Kommas, Semikolons o.ä.
                            ja, hab den fehler bemerkt und schon korrigiert. als ich hier noch schrieb...

                            stimmt, das klappt:
                            PHP-Code:
                            $arr = array('a''b''c');
                            eval(
                            '$test = '.var_export($arrtrue).';'); 
                            Fehler war wohl nur das semikolon am falschen Ort zu viel.. ist auch schon spät am abend. das letzte komma hat keinen einfluss.
                            bzw.

                            am Ende werd ich wohl doch die array_save funktion nutzen. weils nur ein array und kein hash bzw. assoz. array ist.
                            PHP-Code:
                            $arr = array('a''b''c');
                            //weil das 
                            $test = array (
                              
                            => 'a',
                              
                            => 'b',
                              
                            => 'c',
                            );
                            // braucht einfach "ca." 6 byte zusätzlich pro wert. für assoziativ, aber perfekt 
                            Wenigstens weiss ich nun das sich hashs (bzw. assoziativ arr) mit der var_export perfekt speichern lassen
                            www.scriptforums.com - Foren für Skripts
                            www.ragonvote.net - Kostenlose Umfragen
                            www.ragonsoft.com - PHP und Android Apps (z. B. Knoten Video Guide)

                            Kommentar

                            Lädt...
                            X