2011-10-25 69 views
0

我有一個數組,看起來像搜索數組?然後獲取子值?

[products] => Array 
     (
      [0] => stdClass Object 
       (
        [order_product_id] => 91385 
        [order_id] => 5065 
        [nid] => 2140 
        [title] => Gi Treasure 
        [manufacturer] => 
        [model] => giftcard 
        [qty] => 5 
        [cost] => 0.00000 
        [price] => 25.00000 
        [weight] => 0 
        [data] => Array 
         (
          [gift_description] => HJello! 
          [gift_email] => dubccom 
          [gift_sender] => Hello 
          [gift_sendDate] => 2011-10-25 
          [gift_title] => Thesure 
          [gift_card] => 2130 
          [gift_price] => 25 
          [gift_qty] => 5 
          [gift_name] => Steveek 
          [module] => uc_product 
          [cert_code] => 8-x8mfqXyUYXze 
         ) 

        [order_uid] => 1 
       ) 

      [1] => stdClass Object 
       (
        [order_product_id] => 91386 
        [order_id] => 5065 
        [nid] => 2140 
        [title] => Gift asure 2 
        [manufacturer] => 
        [model] => giftcard 
        [qty] => 1 
        [cost] => 0.00000 
        [price] => 35.00000 
        [weight] => 0 
        [data] => Array 
         (
          [gift_description] => Hello There! 
          [gift_email] => dubcaom 
          [gift_sender] => Hello 
          [gift_sendDate] => 2011-10-25 
          [gift_title] => The Holida 
          [gift_card] => 2134 
          [gift_price] => 35 
          [gift_qty] => 1 
          [gift_name] => Steven 
          [module] => uc_product 
          [cert_code] => 9-8xsxgDW9yrMq 
         ) 

        [order_uid] => 1 
       ) 

     ) 

我想從產品陣列中的數據陣列,其中order_product_id(所以如果它是91385,我會得到

[data] => Array 
         (
          [gift_description] => Hello 
          [gift_email] => dubccom 
          [gift_sender] => Hello 
          [gift_sendDate] => 2011-10-25 
          [gift_title] => Thesure 
          [gift_card] => 2130 
          [gift_price] => 25 
          [gift_qty] => 5 
          [gift_name] => Steveek 
          [module] => uc_product 
          [cert_code] => 8-x8mfqXyUYXze 
         ) 

任何幫助如何我可以這樣做?

回答

0
$prod_data = false; 
foreach ($products as $product) 
{ 
    if ($product->order_product_id == 91385) 
    { 
     $prod_data = $product->data; 
     break; 
    } 
} 
if ($prod_data) { 
    // knock yourself out 
} 

神似簡單的英語,是吧?

2
function search_products($id,$products) 
{ 
    $id = intval($id); 
    foreach($products as $product) 
    { 
     if($product->order_product_id == $id) 
     { 
      return($product->data); 
     } 
    } 
    return null; 
} 

一個受過教育的猜測,你在找什麼。稱它爲search_products(91385, $products)。如果它返回null,它沒有找到產品ID。我還增加了一個對intval的調用,所以如果你依靠用戶輸入來實現這個功能,無論如何它都將是一個int。如果您已經將其清理爲int,這並不會造成傷害。

編輯:誤讀原始帖子。從數組語法更新爲對象屬性語法。

+0

只是FYI,沒有必要調用'return null;'作爲函數的最後一行,因爲這是隱式發生的事情。 – DaveRandom

+0

@DaveRandom:嗯,它的確如此。無論如何,它不會傷害 – Cyclone

1
function data_by_order ($arr, $orderId) { 
    foreach ($arr as $item) { // Loop the array 
    if ($item->order_product_id == $orderId) { // Test this item for the right order id 
     return $item->data; // Return the data array 
    } 
    } 
    return FALSE; // Return false if we didn't find it 
} 

// Example usage: 
$data = data_by_order($array,91385); 
print_r($data);