2014-01-08 50 views
4

使用以下foreach循環如何推動一個鍵值對在多維陣列的PHP

$category_ids = array_of_ids; 

foreach($category_ids as $category_id) { 
    $queryAllProducts['products'][] = $this->api->queryAllProducts(array('params' => array('categoryCode' => $category_id, 'usertoken' => USER_TOKEN)))); 
    } 

作爲上述環得到以下結構調查的結果。 現在如何在productName之後添加category_id

Array 
(
    [0] => stdClass Object 
     (
      [result] => stdClass Object 
       (
        [products] => stdClass Object 
         (
          [Product] => Array 
           (
            [0] => stdClass Object 
             (
              [price] => 0.72 
              [productName] => product_name_appears_here 
             ) 

            [1] => stdClass Object 
             (
              [price] => 0.72 
              [productName] => product_name_appears_here 
             ) 

            [2] => stdClass Object 
             (
              [price] => 0.72 
              [productName] => product_name_appears_here 
             ) 
           ) 
         ) 
       ) 
     ) 

    [1] => stdClass Object 
     (
      [result] => stdClass Object 
       (
        [products] => stdClass Object 
         (
          [Product] => Array 
           (
            [0] => stdClass Object 
             (
              [price] => 3.19 
              [productName] => product_name_appears_here 
             ) 

            [1] => stdClass Object 
             (
              [price] => 1.12 
              [productName] => product_name_appears_here 
             ) 

            [2] => stdClass Object 
             (
              [price] => 1.66 
              [productName] => product_name_appears_here 
             ) 

            [3] => stdClass Object 
             (
              [price] => 1.66 
              [productName] => product_name_appears_here 
             ) 
           ) 
         ) 
       ) 
     ) 

我該如何處理這種情況。

我的預期輸出

對於樣品生病秀僅2陣列

[0] => stdClass Object 
      (
        [price] => 0.72 
        [productName] => product_name_appears_here 
        [category_id] => something_which_is_from_$category_id 
     ) 

[1] => stdClass Object 
      (
        [price] => 0.72 
        [productName] => product_name_appears_here 
        [category_id] => something_which_is_from_$category_id 
     ) 
+0

你給你的結構的例子,你能不能也對結構進行相應的例子,你慾望? – jgroenen

+1

看看你的輸出:你不是在處理數組,而是'stdClass'的實例,對象需要不同的方法。如果你不能使用它們,或者將它們轉換爲數組($ asArray =(array)$ object'),或者如果對象的屬性也是對象:'$ asArray = json_decode(json_encode($ recursiveObject ),true);' –

回答

1

嘗試這樣

$category_ids = array_of_ids; 

foreach($category_ids as $category_id) { 
    $rowResult = $this->api->queryAllProducts(array('params' => array('categoryCode' => $category_id, 'usertoken' => USER_TOKEN)))); 
    foreach($rowResult->result->products->Product as $values) { 
    $values->category_id = {HERE CODE TO GET category_id} 
    } 
    $queryAllProducts['products'][] = $rowResult; 
} 
+0

您給出的代碼是在productName旁邊添加,但不在productName後面。任何其他更改需要完成 – overflow

+0

@Seting SO您的$ this-> api-> queryAllProducts結果是從「產品」開始的嗎? –

+0

它從結果 – overflow

0

試試這個:

foreach($category_ids as $category_id) { 
    $queryAllProducts['products'][] = $this->api->queryAllProducts(array('params' => array('categoryCode' => $category_id, 'usertoken' => USER_TOKEN)))); 
    $a = array_pop($queryAllProducts); 
    $b = array_pop($a); 
    $c = array_pop($b); 
    $d = array_merge($c, array('category_id' => $category_id)); 
    array_push($queryAllProducts,$d); 
} 

或可能:

foreach($category_ids as $category_id) { 
    $result = $this->api->queryAllProducts(array('params' => array('categoryCode' => $category_id, 'usertoken' => USER_TOKEN)))); 
    $a = array_pop($result); 
    $b = array_merge($a, array('category_id' => $category_id)); 
    $queryAllProducts['products'][] = $b; 
} 
0

$這個 - > API - > queryAllProducts返回級聯對象數組,所以你應該嘗試從結果得到的產品陣列,然後建立自己的陣列按您的要求。

在這裏,我已經更新了你的代碼,試試這個.....

foreach($category_ids as $category_id) { 
$rsobj = $this->api->queryAllProducts(array('params' => array('categoryCode' => $category_id, 'usertoken' => USER_TOKEN)))); 
$Products = $rsobj->result->products->Product; 
foreach($Products as $product) { 
    $queryAllProducts['products'][] = (object)array_merge($product, array('category_id' => something_which_is_from_$category_id)); 
} 

}