Welche Struktur haben diese Daten?

Lesezeit: 5 Minuten

Benutzer-Avatar
dave

Ich habe diese MySQL-Tabelle mit einem Feld mit diesem Wert:

a:18:{
i:0;
a:7:{
        i:0;
        i:10;
        i:1;
        s:5:"Email";
        i:2;
        s:10:"user_email";
        i:3;
        s:4:"text";
        i:4;
        s:1:"y";
        i:5;
        s:1:"y";
        i:6;
        s:1:"y";
    }
i:1;
a:7:{
        i:0;
        i:1;
        i:1;
        s:10:"First Name";
        i:2;
        s:10:"first_name";
        i:3;
        s:4:"text";
        i:4;
        s:1:"y";
        i:5;
        s:1:"y";
        i:6;
        s:1:"y";
    }
i:2;
a:7:{
        i:0;
        i:2;
        i:1;
        s:9:"Last Name";
        i:2;
        s:9:"last_name";
        i:3;
        s:4:"text";
        i:4;
        s:1:"y";
        i:5;
        s:1:"y";
        i:6;
        s:1:"y";
    }
i:3;
a:7:{
        i:0;
        i:4;
        i:1;
        s:9:"Address 2";
        i:2;
        s:5:"addr2";
        i:3;
        s:4:"text";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"n";
    }
i:4;
a:7:{
        i:0;
        i:5;
        i:1;
        s:4:"City";
        i:2;
        s:4:"city";
        i:3;
        s:4:"text";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"n";
    }
i:5;
a:7:{
        i:0;
        i:6;
        i:1;
        s:5:"State";
        i:2;
        s:8:"thestate";
        i:3;
        s:4:"text";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"n";
    }
i:6;
a:7:{
        i:0;
        i:7;
        i:1;
        s:3:"Zip";
        i:2;
        s:3:"zip";
        i:3;
        s:4:"text";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"n";
    }
i:7;
a:7:{
        i:0;
        i:9;
        i:1;
        s:9:"Day Phone";
        i:2;
        s:6:"phone1";
        i:3;
        s:4:"text";
        i:4;
        s:1:"y";
        i:5;
        s:1:"y";
        i:6;
        s:1:"n";
    }
i:8;
a:7:{
        i:0;
        i:9;
        i:1;
        s:9:"Alt Phone";
        i:2;
        s:6:"phone2";
        i:3;
        s:4:"text";
        i:4;
        s:1:"y";
        i:5;
        s:1:"y";
        i:6;
        s:1:"n";
    }
i:9;
a:9:{
        i:0;
        i:9;
        i:1;
        s:9:"GENDER";
        i:2;
        s:6:"gender";
        i:3;
        s:4:"select";
        i:4;
        s:1:"y";
        i:5;
        s:1:"y";
        i:6;
        s:1:"n";
        i:7;
        s:4:"male";
        i:8;
        s:5:"female";
    }
i:10;
a:7:{
        i:0;
        i:11;
        i:1;
        s:13:"Confirm Email";
        i:2;
        s:13:"confirm_email";
        i:3;
        s:4:"text";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"n";
    }
i:11;
a:7:{
        i:0;
        i:3;
        i:1;
        s:9:"Address 1";
        i:2;
        s:5:"addr1";
        i:3;
        s:4:"text";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"n";
    }
i:12;
a:7:{
        i:0;
        i:8;
        i:1;
        s:7:"Country";
        i:2;
        s:7:"country";
        i:3;
        s:4:"text";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"n";
    }
i:13;
a:7:{
        i:0;
        i:14;
        i:1;
        s:8:"Password";
        i:2;
        s:8:"password";
        i:3;
        s:8:"password";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"n";
    }
i:14;
a:7:{
        i:0;
        i:15;
        i:1;
        s:16:"Confirm Password";
        i:2;
        s:16:"confirm_password";
        i:3;
        s:8:"password";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"n";
    }
i:15;
a:9:{
        i:0;
        i:16;
        i:1;
        s:3:"TOS";
        i:2;
        s:3:"tos";
        i:3;
        s:8:"checkbox";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"n";
        i:7;
        s:5:"agree";
        i:8;
        s:1:"n";
    }
i:16;
a:7:{
        i:0;
        i:12;
        i:1;
        s:7:"Website";
        i:2;
        s:8:"user_url";
        i:3;
        s:4:"text";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"y";
    }
i:17;
a:7:{
        i:0;
        i:13;
        i:1;
        s:17:"Biographical Info";
        i:2;
        s:11:"description";
        i:3;
        s:8:"textarea";
        i:4;
        s:1:"n";
        i:5;
        s:1:"n";
        i:6;
        s:1:"y";
    }
}

Ich habe dies schon mehrfach in anderen Datenbanken gesehen, bin mir aber nicht sicher, um welchen Datentyp/Feld es sich handelt? Grund, warum ich frage, weil ich versuche, ein make-Element für den Eingabetyp “select” zu bekommen, es aber anscheinend nicht herausfinden kann. Weiß jemand?

Nach meinem Verständnis handelt es sich bei den obigen Daten um die Serialisierung von Formulareingabeelementen wie Textfeldern, Kontrollkästchen usw.

Wie würden sie also ein ausgewähltes Eingabefeld serialisieren? Zum Beispiel:

<select>
  <option value="1">1</option>
  <option value="2">2</option>
</select>

Benutzer-Avatar
Pala_

Es ist serialized Daten, höchstwahrscheinlich durch die PHP-Funktion serialize()

http://php.net/manual/en/function.serialize.php

Beschreibung:

string serialize ( mixed $value ) Erzeugt eine speicherbare Darstellung eines Wertes.

Dies ist nützlich, um PHP-Werte zu speichern oder weiterzugeben, ohne deren Typ und Struktur zu verlieren.

Um den serialisierten String wieder in einen PHP-Wert umzuwandeln, verwenden Sie unserialize().

Beispiel:

<?php
  $obj = new stdclass;
  $obj->prop1 = 1;
  $obj->prop2 = "two";
  $arr = array(0, 1, 2, array("key" => "value", "another key" => "another value"), $obj);
  print serialize($arr);
?>

wird ausgeben:
a:5:{i:0;i:0;i:1;i:1;i:2;i:2;i:3;a:2:{s:3:"key";s:5:"value";s:11:"another key";s:13:"another value";}i:4;O:8:"stdClass":2:{s:5:"prop1";i:1;s:5:"prop2";s:3:"two";}}

Und um einen Ausschnitt von Ihnen zu erklären, nehmen Sie:

a:18:{
i:0;
a:7:{
        i:0;
        i:10;
        i:1;
        s:5:"Email";
        i:2;
        s:10:"user_email";
        i:3;
        s:4:"text";
        i:4;
        s:1:"y";
        i:5;
        s:1:"y";
        i:6;
        s:1:"y";
    }

Es heißt, die Daten sind ein Array mit 18 Elementen a:18das Element am Index 0 i:0 ist ein Array aus 7 Elementen a:7das Element am Index 0 dieses Arrays i:0 ist eine ganze Zahl mit dem Wert 10 i:10das Element am Index 1 i:1 ist ein String der Länge 5 s:5 mit dem Wert email. usw.

a var_dump von nur dem ersten Element aus Ihren serialisierten Daten ergibt:

array(1) {
  [0]=>
  array(7) {
    [0]=>
    int(10)
    [1]=>
    string(5) "Email"
    [2]=>
    string(10) "user_email"
    [3]=>
    string(4) "text"
    [4]=>
    string(1) "y"
    [5]=>
    string(1) "y"
    [6]=>
    string(1) "y"
  }
}

Um Ihr bestimmtes Snippet zu serialisieren – nun, es gibt ein paar Möglichkeiten, dies zu tun, und ich habe kein WordPress zur Hand, um es zu überprüfen, aber eine Möglichkeit wäre, es einfach so in PHP darzustellen:

$input = array('type' => 'select');
$opts = array(array('value' => 1, 'text' => '1'), array('value' => 2, 'text' => '2'));
$input['options'] = $opts;
$serialized = serialize($input);

was Ihnen eine Zeichenfolge geben würde, die aussieht wie
a:2:{s:4:"type";s:6:"select";s:7:"options";a:2:{i:0;a:2:{s:5:"value";i:1;s:4:"text";s:1:"1";}i:1;a:2:{s:5:"value";i:2;s:4:"text";s:1:"2";}}}

  • super danke mann. Jetzt wissen Sie, wie sie einen ausgewählten Eingabetyp für diese Daten oben formatiert haben? im Grunde kennst du die Struktur dafür?

    – dave

    23. April 2015 um 6:58 Uhr

  • Beachten Sie, dass wenn die Daten nach der Serialisierung nicht richtig gespeichert werden, dann bei der Verwendung unserialize Möglicherweise erhalten Sie Fehler wie Notice: unserialize(): Error at offset 0 of 788 bytes die Nachricht kann in verschiedenen Fällen unterschiedlich sein.

    – Abhik Chakraborty

    23. April 2015 um 7:02 Uhr

  • Wie würden sie also ein ausgewähltes Eingabefeld serialisieren? Beispiel:

    – dave

    23. April 2015 um 7:07 Uhr


  • das würde davon abhängen, wie sie die Daten für das Auswahlfeld speichern. Wenn sie beispielsweise den Text und den Wert für jede Option speichern, kann dies so gespeichert werden a:2:{i:0;a:2:{s:5:"value";i:1;s:4:"text";s:8:"option 1";}i:1;a:2:{s:5:"value";i:2;s:4:"text";s:8:"option 2";}}die deserialisiert und dann zum Erstellen der option Stichworte

    – pala_

    23. April 2015 um 7:11 Uhr


  • hmm i c … weil sie für ein Kontrollkästchen kein inneres Array für die Kontrollkästchenwerte verwendet haben … also versuche ich zu sehen, ob sie dieselbe Konvention für den ausgewählten Typ befolgt haben.

    – dave

    23. April 2015 um 7:12 Uhr

1130340cookie-checkWelche Struktur haben diese Daten?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy