2014-01-26 29 views
0

我有以下數組格式。我需要提取的陣列來獲得所有屬性PHP從數組組中提取特殊字符

考慮,這是我的樣品結果

Array 
(
    [0] => Array 
     (
      [bean_id] => 7628 
      [product_id] => 7389 
      [sku] => 950981-1 
      [item_value] => Color:Green;Size:M 
     ) 

    [1] => Array 
     (
      [bean_id] => 7629 
      [product_id] => 7389 
      [sku] => 950981-2 
      [item_value] => Size:L;Color:Green 
     ) 

    [2] => Array 
     (
      [bean_id] => 7630 
      [product_id] => 7389 
      [sku] => 950981-3 
      [item_value] => Size:XL;Color:Green 
     ) 

) 

我用下面的循環提取所有ITEM_VALUE;

foreach($attributes as $attribute) { 
    list($key, $value) = explode(':', $attribute['item_value']); 
    $product_attribute[$key][$attribute['sku']] .= $value.','; 
} 
print_r($product_attribute); exit; 

上面的語句產生的輸出

Array 
(
    [Color] => Array 
    (
     [950981-1] => Green;Size, #Here i need to get only Green not **;size,** 
    )  
    [Size] => Array 
    (
     [950981-2] => L;Color, 
     [950981-3] => XL;Color, 
    ) 
) 

回答

0

試試這個:

$product_attribute = array(); 
foreach ($products as $product) { 
    $sku = $product['sku']; 
    foreach (explode(';', $product['item_value']) as $attr) { 
     list($name, $val) = explode(':', $attr); 
     $product_attribute[$name][$sku] = $val; 
    } 
} 
0

我假設你的數組被命名爲$ prodattrs

foreach($prodattrs as $no => $prodattr) { 
    foreach ($prodattr as $field => $value) { 
     switch ($field) { 
     case 'item_value': 
      $atribs = explode(';', $value); 
      foreach ($atribs as $attr) { 
       list($name, $val) = explode(':', $attr); 
      // do what do you want to do 
      } 
      break; 
     case 'sku': 
      //..... 
      break; 
     case 'bean_id': 
      //..... 
      break; 
     case 'product_id': 
      //..... 
      break; 
     } 
    } 
}