Ich versuche, einen bestimmten Teil eines Arrays zu erhalten und in HTML zu ändern, bevor ich es an meine Ansicht zurücksende.Zugriff auf JSON in einem PHP-Array
Ich glaube, das Array ist JSON - wie ist der beste Weg für mich, Zugriff auf dieses Zeug, um es in HTML zu ändern?
Meine ganze Reihe sieht wie folgt zur Zeit:
{"products":[{"id":8,"link":"http:\/\/www.mysite.com\/mydirectory\/prestashop\/trophies\/8-football-resin
.html","quantity":2,"image":"http:\/\/www.mysite.com\/mydirectory\/prestashop\/img\/p\/en-default-home_default
.jpg","image_cart":"http:\/\/www.mysite.com\/mydirectory\/prestashop\/img\/p\/en-default-cart_default
.jpg","priceByLine":"$40.00","name":"Football Resin","price":"$40.00","price_float":40,"idCombination"
:0,"idAddressDelivery":0,"is_gift":false,"hasAttributes":false,"hasCustomizedDatas":true,"customizedDatas"
:[{"customizationId":76,"quantity":1,"datas":[{"type":1,"datas":[{"index":0,"value":"%5B%5B%7B%22name
%22%3A%22trophy%5B1%5D%5Bline1%5D%22%2C%22engraving%22%3A%22ccc%22%7D%2C%7B%22name%22%3A%22trophy%5B1
%5D%5Bline2%5D%22%2C%22engraving%22%3A%22ddd%22%7D%2C%7B%22name%22%3A%22trophy%5B1%5D%5Bline3%5D%22%2C
%22engraving%22%3A%22dddd%22%7D%5D%5D","truncatedValue":"%5B%5B%7B%22name%22%3A%22..."}]}]},{"customizationId"
:77,"quantity":1,"datas":[{"type":1,"datas":[{"index":0,"value":"%5B%5B%7B%22name%22%3A%22trophy%5B1
%5D%5Bline1%5D%22%2C%22engraving%22%3A%22asdf%22%7D%2C%7B%22name%22%3A%22trophy%5B1%5D%5Bline2%5D%22
%2C%22engraving%22%3A%22dddasdf%22%7D%2C%7B%22name%22%3A%22trophy%5B1%5D%5Bline3%5D%22%2C%22engraving
%22%3A%22ddddddd%22%7D%5D%5D","truncatedValue":"%5B%5B%7B%22name%22%3A%22..."}]}]}]}],"discounts":[]
,"shippingCost":"$7.00","shippingCostFloat":7,"wrappingCost":"$0.00","nbTotalProducts":2,"total":"$47
.00","productTotal":"$40.00","freeShipping":"$0.00","freeShippingFloat":0,"free_ship":false,"isVirtualCart"
:false,"hasError":false,"crossSelling":""}
Der Teil I in immer interessiert bin, ist der ‚Wert‘ in den customizedDatas (ich es formatiert, dass die Art und Weise, so konnte ich leichter es lesen):
"customizedDatas"
:
[
{
"customizationId":76,
"quantity":1,
"datas":
[{
"type":1,
"datas":
[{
"index":0,"value":"%5B%5B%7B%22name
%22%3A%22trophy%5B1%5D%5Bline1%5D%22%2C%22engraving%22%3A%22ccc%22%7D%2C%7B%22name%22%3A%22trophy%5B1
%5D%5Bline2%5D%22%2C%22engraving%22%3A%22ddd%22%7D%2C%7B%22name%22%3A%22trophy%5B1%5D%5Bline3%5D%22%2C
%22engraving%22%3A%22dddd%22%7D%5D%5D","truncatedValue":"%5B%5B%7B%22name%22%3A%22..."
}]
}]
},
Sie können sehen, der 'Wert' ist eine Reihe von codierten/serialisierten JSON. Ich muss das aus dem Array ziehen, die Teile davon in HTML konvertieren und dann wieder in das Array zurückgeben und es an die Ansicht übergeben.
Ich habe einige Teile am Front-End geändert, um es zu tun, aber es gibt zahlreiche Stellen, die diese Informationen erfordern - also versuche ich es im Controller zu tun, so dass es überall schön angezeigt wird anstatt zu versuchen, Dutzende zu aktualisieren von Bits von Code im gesamten Frontend.
Am vorderen Ende - das funktioniert:
{if isset($customization.datas.$CUSTOMIZE_TEXTFIELD.0)}
{$encoded_values = $customization.datas.$CUSTOMIZE_TEXTFIELD.0.value}
{$decoded_url_values = urldecode($encoded_values)}
{$json_values = json_decode($decoded_url_values)}
{$json_key_values=array_keys($json_values)}
{foreach $json_values as $orderItems }
<h6 class="item-cart-title">{l s='Item '}{[email protected]+1}</h6>
<ul>
{foreach $orderItems as $orderItem }
<li class="item-cart-engraving">{l s='Line '}{[email protected]+1} : {$orderItem->engraving}</li>
{/foreach}
</ul>
{/foreach}
Wie komme ich an die Daten für den ‚Wert‘ in der obigen Array?
Derzeit ist das customizedDatas wie folgt aufgebaut:
$customized_datas[(int)$row['id_product']][(int)$row['id_product_attribute']][(int)$row['id_address_delivery']][(int)$row['id_customization']]['datas'][(int)$row['type']][] = $row;
So weiß ich [ ‚Daten‘] ist das, was ich will - aber was ist der beste Weg, um die Objekte innerhalb des Arrays zuzugreifen?
Wenn Sie wählen, um zu downvote - bitte geben Sie mir einen Grund, warum ich weiß, ob ich etwas falsch gemacht habe. – Hanny
Das "Array", das Sie gepostet haben, ist eine JSON-Zeichenfolge. Wo ist das PHP-Array, in dem Sie sagen, dass es gespeichert ist? –
@Hanny Ich stimme zu und upvoted nur aus diesem Grund. Ich bin mir nicht sicher, ob ich Ihnen helfen kann, aber jetzt Ihren Code überprüfen. – jDo