2016-10-03 4 views
0

ich die Werte in meinem db in format wie Lagerung:PHP - Wie Daten für bestimmte Schlüssel aus dem Objekt extrahieren

title = {"en":"test package en","ar":"test package ar"} 
description = {"en":"test desc en","ar":"test decription ar"} 

Wenn ich meine DB-Abfrage, gibt es mir die Array wie:

array (size=3) 
    0 => 
    object(stdClass)[39] 
     public 'id' => string '1' (length=1) 
     public 'name' => string '{"en":"test package en","ar":"test package ar"}' (length=47) 
     public 'description' => string '{"en":"test desc en","ar":"test decription ar"}' (length=147) 
     public 'price' => string '{"en":"200 en","ar":"200 ar"}' (length=29) 
     public 'duration' => string '{"en":"1 hr","ar":"1 hr ar"}' (length=28) 
     public 'created_at' => string '2016-09-30 01:53:24' (length=19) 
     public 'updated_at' => string '2016-09-30 01:53:24' (length=19) 
     public 'created_by' => string '1' (length=1) 
     public 'updated_by' => string '1' (length=1) 

Wie kann ich die Werte in diesem Array erhalten wie

array(
    'en'=>array(
    'name'=>'test package en', 
    'desc'=>'test desc en', 
) 
    'ar'=>array(
    'name'=>'test package ar', 
    'desc'=>'test desc ar' 
) 
) 
+1

Verwenden Sie 'json_decode()' von php mit dem zweiten Parameter auf 'true', um json in assoziative Arrays zu dekodieren. –

+0

Es ist JSON. Verwenden Sie 'json_decode', um die Daten zu extrahieren. –

Antwort

1

meiner Meinung nach getrennt, sollten Sie JSON nicht speichern in Ihre Datenbank (irgendwie schlägt der Punkt). Sie sollten einfach ein anderes Feld haben language und speichern Sie es wie folgt:

|  title  | description | language | 
| ----------------- | ----------- | -------- | 
| test package (ar) | ..... | ar | 
| test package (en) | ..... | en | 

Wenn Sie noch es so halten wollen, müssen Sie einen Transformator-Funktion (und verwenden json_decode), wie das schaffen folgende:

function transform($fields) 
{ 
    $transformed = [ 
     'en' => ['title' => '', 'desc' => ''], 
     'ar' => ['title' => '', 'desc' => ''] 
    ]; 

    $title_json = json_decode($fields['title'), true); 
    $transformed['en']['title'] = $title_json['en']; 
    $transformed['ar']['title'] = $title_json['ar']; 

    $desc_json = json_decode($fields['desc'), true); 
    $transformed['en']['desc'] = $desc_json['en']; 
    $transformed['ar']['desc'] = $desc_json['ar']; 

    return $transformed; 
} 
Verwandte Themen