2012-03-21 125 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)