簡體   English   中英

PHP從另一個數組創建數組

[英]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),並從數組中刪除一些對象,例如fPricepriceType等。我想做到這一點的最佳方法是創建另一個數組。 但是我似乎無法使其工作:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM