[技術討論] 如何讀取array裡的object?

比如話黎個array有兩件product,入面item_meta_array有佢地既product id
我想印兩個id出黎即係213同65
https://gist.github.com/ben1one/367eac79bd11be0c05b0f05c213a402a

有無好直接既方法可以囉到?因為佢個number key唔係固定的
黎個係我既寫法,但有無更直接既寫法?
  1. foreach ( $order_item as $item ) {
  2.         $pid = findObj($item['item_meta_array'], "_product_id");
  3.         echo $pid."<br/>";
  4. }

  5. function findObj($input, $key){
  6.         foreach ($input as $k => $v ) {
  7.                 foreach ( $v as $k2 => $v2 ) {
  8.                         if($k2=="key" && $v2 ==$key){
  9.                                 return ($v->value);                                               
  10.                         }
  11.                 }
  12.         }       
  13.         return "";
  14. }
複製代碼

本帖最後由 hihihi123hk 於 2017-2-7 09:07 編輯
比如話黎個array有兩件product,入面item_meta_array有佢地既product id
我想印兩個id出黎即係213同65


有 ...
清仔 發表於 2017-2-7 02:12


   
既然你要 Compare 係一個 Value in Class 就無謂再拆開佢做 Key value

係個 Class 開多個 Method 叫 isKeyEqualTo($key)

然後 Return 一個 Class 出去 。

仲有搵唔到應該回 null 或姐 Throw Exception 等出面 Handle 而唔係Return Empty String 伏人

via HKEPC Ionic Reader v1.6.0 - iPhone

TOP

我唔知點係最好,呢種structure都係難搞
不過比我寫既話,我會transform一次個item_meta_array變做
$orderItemAttributes = array(
   '_qty' => 2,
   '_product_id' => 234,
   ...
);

再拎 $orderItemAttributes['_produt_id']
個logic會易睇d

TOP

好似係drupal見過類似既data...
我估樓主都無辦法決定個data structure...gg

scan item_meta_array那O(n) 你避唔開
不如你睇下會唔會有機會可以cache起reuse
做一次transfer扭data...下次reuse可以O(1)

TOP

好似係drupal見過類似既data...
我估樓主都無辦法決定個data structure...gg

scan item_meta_array那O(n)  ...
wfu2009 發表於 2017-2-8 01:20


如果data唔多其實都唔會太慢o既... 但我就會選擇rebuild過個structure...

TOP

the structure is from wooCommerce api

TOP

轉用isset(), 慳左個inner loop.
  1.     function findObj($input, $key){
  2.             foreach ($input as $k => $v ) {
  3.                 if (isset($v->key) && $v->key == $key)
  4.                     return $v->value;
  5.             }
  6.             return "";
  7.     }
複製代碼

TOP

多謝各位高手

TOP

相關文章