Citat:
Ursprungligen postat av
Kakan1137
Tack, men detta måste ju komma inom:
[PHP]
"Articles" => array(
);
[/PHP]
Och så som jag förstått det och läst mig till så går det ju inte att ha en foreach inom en array? Så hur ska jag få in detta inom den arrayen?
Jag är lite osäker på vad du försöker åstadkomma och hur, men om jag har förstått dig rätt vill du tilldela arrayn $postData de nya värdena av $json som är en JSON-representation av samma variabel som ska läggas till.
Du lägger till element till en array genom att använda
[php]
$array[] = $elementsomskaläggastill;
[/php]
Lek gärna med att definiera olika arrayer mot slutet, som $postData[], $postData['Articles'], $postData['Articles'][], och lägg märke till skillnaderna om var ditt data stoppas in i arrayn.
Om du loopar igenom $json['Articles'] och lägger till varje nyckel till den befintliga $postData['Articles']-arrayn borde du åstadkomma vad du vill göra, dvs att lägga till en ny artikel utifrån JSON-formaterad data till $postData-variabeln. Det viktiga här jämfört med din kod är foreach-loopen mot slutet. Som du själv är inne på kan du inte använda foreach inuti en variabel-/array-deklaration, men det är inte vad du vill göra. Du vill ha variabeln (JSON-strängen) och därefter decode:a den och lägga till den i din befintliga array.
[php]<?php
session_start();
// Initialisera shippingCost eftersom den inte är deklarerad annars
$_SESSION['shippingCost'] = 10;
$postData = array(
"Articles" => array(
array(
"ArticleName" => "testprodukt 1",
"ArticleNumber"=>"1",
"Description"=>"testar denna produkt",
"Price"=>"17500",
"Quantity"=>"100",
"VAT"=>"2500",
),
array(
"ArticleName" => "Frakt",
"ArticleNumber"=>"1",
"Description"=>"Fraktkostnad",
"Price"=>$_SESSION['shippingCost']*100,
"Quantity"=>"100",
"VAT"=>"2500",
),
)
);
// Vårt input-data, samma layout som befintlig array
$inputData = array(
"Articles" => array(
array(
"ArticleName" => "testprodukt 2",
"ArticleNumber"=>"2",
"Description"=>"testar denna produkt också",
"Price"=>"17500",
"Quantity"=>"100",
"VAT"=>"2500",
),
array(
"ArticleName" => "Frakt",
"ArticleNumber"=>"2",
"Description"=>"Fraktkostnad",
"Price"=>$_SESSION['shippingCost']*100,
"Quantity"=>"100",
"VAT"=>"2500",
),
),
);
echo "Värdet av \$postData är: <br>";
echo "<pre>";
print_r($postData);
echo "</pre>";
echo "<hr>";
// Lek att vi får $inputData som en JSON-encoded string
$jsoninput = json_encode($inputData);
// Deklarera JSON-encoded string som en normal array i PHP
$json = json_decode($jsoninput, true);
echo "Värdet av \$inputData är: <br>";
echo "<pre>";
print_r($inputData);
echo "</pre>";
echo "<hr>";
echo "Värdet av \$postData efter att JSON-produkt lagts till är: <br>";
foreach($json['Articles'] as $jsonartikel) {
$postData['Articles'][] = $jsonartikel;
}
echo "<pre>";
print_r($postData);
echo "</pre>";
echo "<hr>";
?>[/php]