2012-03-21 130 views
1

我遇到了這個小問題。php陣列分區/爆炸

比方說,我有一個數組,像這樣:

Array 
    (
     [0] => Size: tiny 
     [1] => Size: small 
     [2] => Size: big 
     [3] => Colour: yellow 
     [4] => Colour: black 
     [5] => Colour: blue 
     [6] => Length: short 
     [7] => Length: long 
    ) 

我想要做的是,我們將向您每個字段,fich我用foreach一樣,使用爆炸給每個陣列劃分,所以我現在有一個數組中的第一個屬性(大小,coluor,長度等等)和其他字段中的另一個值。

結果我希望的結果實際上是發現,如果所有的屬性(大小,顏色...)是相同的,或者他們是不同的。如果它們是不同的,我想就把論略數組中......想必這個例子將返回數組是這樣的:

Array 
(
    [0] => Array 
     (
      [0] => Size: tiny 
      [1] => Size: small 
      [2] => Size: big 
     ) 

    [1] => Array 
     (
      [0] => Colour: yellow 
      [1] => Colour: black 
      [2] => Colour: blue 
     ) 

    [2] => Array 
     (
      [0] => Length: short 
      [1] => Length: long 
     ) 

) 

感謝您的幫助和建議!沃爾瑪

回答

1
<?php 
$array = Array 
    (
     '0' => 'Size: tiny', 
     '1' => 'Size: small', 
     '2' => 'Size: big', 
     '3' => 'Colour: yellow', 
     '4' => 'Colour: black', 
     '5' => 'Colour: blue', 
     '6' => 'Length: short', 
     '7' => 'Length: long' 
    ); 

    $map = array(); 
    foreach($array as &$value) 
    { 
     $keyV = explode(': ',$value); 
      $map[$keyV[0]][] = $value; 

    } 

    $final = array_values($map); // throw away the keys 

    var_dump($final); 

給出你想要什麼:

array(3) { 
    [0]=> 
    array(3) { 
    [0]=> 
    string(10) "Size: tiny" 
    [1]=> 
    string(11) "Size: small" 
    [2]=> 
    string(9) "Size: big" 
    } 
    [1]=> 
    array(3) { 
    [0]=> 
    string(14) "Colour: yellow" 
    [1]=> 
    string(13) "Colour: black" 
    [2]=> 
    string(12) "Colour: blue" 
    } 
    [2]=> 
    array(2) { 
    [0]=> 
    string(13) "Length: short" 
    [1]=> 
    string(12) "Length: long" 
    } 
} 
+0

感謝chiborg :) – 2012-03-21 09:43:41

+0

非常感謝你非常感謝!這真是令人興奮的事情,我很希望,你真是太棒了! – Martin 2012-03-21 12:45:18

0
<?php 
$array = Array 
    (
     '0' => 'Size: tiny', 
     '1' => 'Size: small', 
     '2' => 'Size: big', 
     '3' => 'Colour: yellow', 
     '4' => 'Colour: black', 
     '5' => 'Colour: blue', 
     '6' => 'Length: short', 
     '7' => 'Length: long' 
    ); 
    foreach($array as &$value) 
    { 
     $value = explode(': ',$value); 
    } 
    $new_array = array(); 
    foreach($array as $value) 
    { 
     $new_array[$value[0]][] = $value[1]; 
    } 
     var_dump($new_array); 

?> 

會給:

array 
    'Size' => 
    array 
     0 => string 'tiny' (length=4) 
     1 => string 'small' (length=5) 
     2 => string 'big' (length=3) 
    'Colour' => 
    array 
     0 => string 'yellow' (length=6) 
     1 => string 'black' (length=5) 
     2 => string 'blue' (length=4) 
    'Length' => 
    array 
     0 => string 'short' (length=5) 
     1 => string 'short' (length=5)