505 Stimmen

Wie konvertiert man ein Array in ein Objekt in PHP?

Wie kann ich ein Array wie dieses in ein Objekt umwandeln?

[128] => Array
    (
        [status] => "Figure A.
 Facebook's horizontal scrollbars showing up on a 1024x768 screen resolution."
    )

[129] => Array
    (
        [status] => "The other day at work, I had some spare time"
    )

55voto

DPP Punkte 12018

Es ist viel zu einfach, Dies wird ein Objekt für rekursive Arrays sowie erstellen:

$object = json_decode(json_encode((object) $yourArray), FALSE);

31voto

Uchephilz Punkte 359

Ich hatte auch dieses Problem, aber ich bemerkte, dass json_decode JSON-Array in Objekt konvertiert.

Also, ich kam über meine Lösung mit json_encode ($PHPArray), die eine JSON-Zeichenfolge von Objekt zurückgibt, dann dekodiert ich die Zeichenfolge mit Json_decode ($string) und es würde ein perfekt strukturiertes Objekt zurückgeben. Kurzschrift

$object = json_decode(json_encode($array));

Oder

$jsonString = json_encode($array);
$object = json_decode($jsonString);

26voto

Noha Shehab Punkte 353

Sie können die Funktion (Objekt) verwenden, um Ihr Array in ein Objekt umzuwandeln.

$arr= [128=> ['status'=>
                 'Figure A. Facebook \'s horizontal scrollbars showing up on a 1024x768 screen resolution.'],
                  129=>['status'=>'The other day at work, I had some spare time']];

            $ArrToObject=(object)$arr;
            var_dump($ArrToObject);

Das Ergebnis wird ein Objekt sein, das Arrays enthält:

object(stdClass)#1048 (2) { [128]=> array(1) {

["status"]=> string(87) "Abbildung A. Die horizontalen Bildlaufleisten von Facebook werden auf einem Bildschirm mit einer Auflösung von 1024x768 angezeigt." }

[129]=> array(1) { ["status"]=> string(44) "Neulich bei der Arbeit hatte ich etwas Zeit" } }

25voto

hakre Punkte 184133

Je nachdem, wo man das braucht und wie man auf das Objekt zugreift, gibt es verschiedene Möglichkeiten, dies zu tun.

Zum Beispiel: Geben Sie es einfach ein

$object =  (object) $yourArray;

Die kompatibelste Methode ist jedoch die Verwendung einer Utility-Methode (noch nicht Teil von PHP), die das Standard-PHP-Casting auf der Grundlage eines Strings, der den Typ angibt, implementiert (oder durch Ignorieren des Strings einfach den Wert de-referenziert):

/**
 * dereference a value and optionally setting its type
 *
 * @param mixed $mixed
 * @param null  $type (optional)
 *
 * @return mixed $mixed set as $type
 */
function rettype($mixed, $type = NULL) {
    $type === NULL || settype($mixed, $type);
    return $mixed;
}

Das Verwendungsbeispiel in Ihrem Fall ( Online-Demo ):

$yourArray = Array('status' => 'Figure A. ...');

echo rettype($yourArray, 'object')->status; // prints "Figure A. ..."

24voto

streetparade Punkte 30394

Das hier hat bei mir funktioniert

  function array_to_obj($array, &$obj)
  {
    foreach ($array as $key => $value)
    {
      if (is_array($value))
      {
      $obj->$key = new stdClass();
      array_to_obj($value, $obj->$key);
      }
      else
      {
        $obj->$key = $value;
      }
    }
  return $obj;
  }

function arrayToObject($array)
{
 $object= new stdClass();
 return array_to_obj($array,$object);
}

Verwendung:

$myobject = arrayToObject($array);
print_r($myobject);

zurück:

    [127] => stdClass Object
        (
            [status] => Have you ever created a really great looking website design
        )

    [128] => stdClass Object
        (
            [status] => Figure A.
 Facebook's horizontal scrollbars showing up on a 1024x768 screen resolution.
        )

    [129] => stdClass Object
        (
            [status] => The other day at work, I had some spare time
        )

wie üblich können Sie es in einer Schleife laufen lassen:

foreach($myobject as $obj)
{
  echo $obj->status;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X