[英]PHP create array from another array
我有一個從API收到的數組。
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 = 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; $singlePriceResult = array(); $singlePriceResult['priceId'] = $field->priceId; $singlePriceResult['customPrice'] = $customPrice; $priceResultArray[] = $singlePriceResult; } $modified_array['success'] = $output_array->success; $modified_array['quoteId'] = $output_array->quoteId; $modified_array['priceResponse'] = $priceResultArray; } var_dump($modified_array);
您不需要外部循環。 $output_array
是單個對象,而不是數組。 您正在遍歷屬性,但是永遠不要對$j
或$item
做任何事情。
而且,除了創建新的數組之外,您還可以簡單地修改原始priceResponse
數組中的對象。
$output_array = json_decode($output);
foreach ($output_array->priceResponse as $field) {
$percent = $field->grossPrice * 10 / 100;
$customPrice = $field->grossPrice + $percent;
$field->customPrice = $customPrice;
unset($field->fPrice);
unset($field->priceType);
unset($field->grossPrice);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.