php阵列分区/爆炸

时间:2012-03-21 09:17:39

标签: 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
    )

我想做的是,通过每个字段,我使用foreach,使用explode来划分每个数组,所以我现在有一个数组中的第一个属性(size,coluor,lenght ..等)和其他领域的其他价值。

结果我希望实际发现,如果所有属性(大小,颜色......)相同,或者它们是不同的。如果它们不同,我想把它放在数组中......大概这个例子会像这样返回数组:

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
        )

)

感谢您的帮助和建议!玛特

2 个答案:

答案 0 :(得分: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"
  }
}

答案 1 :(得分: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)