私はAPIから受け取った配列を持っています。PHPは別の配列から配列を作成します
object(stdClass)#19498 (4) {
["success"]=>
bool(true)
["quoteId"]=>
int(0011)
["abcValue"]=>
float(00)
["priceResponse"]=>
array(4) {
[0]=>
object(stdClass)#19502 (9) {
["priceId"]=>
int(1263)
["fPrice"]=>
float(37.14)
["grossPrice"]=>
float(44.7)
["priceType"]=>
string(2) "ABC"
}
[1]=>
object(stdClass)#19501 (10) {
["priceId"]=>
int(1263)
["fPrice"]=>
float(37.14)
["grossPrice"]=>
float(44.7)
["priceType"]=>
string(2) "ABC"
}
[2]=>
object(stdClass)#19500 (8) {
["priceId"]=>
int(1266)
["fPrice"]=>
float(550.14)
["grossPrice"]=>
float(544.7)
["priceType"]=>
string(2) "DEF"
}
}
}
私は
PriceResponse
すなわちcustomPriceに別のオブジェクトを追加しても
fPrice
のような配列からいくつかのオブジェクトを削除するには、配列をループにしたい
、priceType
など私はこれを行うために考え出し最良の方法は、別の配列を作成することでした。しかし、私はそれが働くように見えることはできません。
PHP:
$output_array = json_decode($output);
$modified_array = array();
$priceResultArray = array();
foreach($output_array as $j => $item) {
foreach($output_array->priceResponse as $i => $field) {
$percent = $field->grossPrice * 10/100;
$customPrice = $field->grossPrice + $percent;
$priceResultArray['priceId'] = $field->priceId;
$priceResultArray['customPrice'] = $customPrice;
}
$modified_array['success'] = $output_array->success;
$modified_array['quoteId'] = $output_array->quoteId;
$modified_array['priceResponse'] = $priceResultArray;
}
var_dump($modified_array);
これは修正された配列の出力である - それだけでpriceResultArrayの最後の結果を示しています
array(3) {
["success"]=>
bool(true)
["quoteId"]=>
int(0011)
["priceResult"]=>
array(5) {
["priceId"]=>
int(1266)
["customPrice"]=>
float(599.17)
}
}
任意のポインタが評価されるだろう。
'$ output_array'は配列ではなくオブジェクトです。なぜそれをループしていますか? – Barmar
唯一の配列は '$ output_array-> price_response'です。 – Barmar
なぜ新しいアレイを作成するのが最善の方法だと思いますか?単に既存の配列のプロパティを追加したり削除したりするのはなぜですか? – Barmar