如何切片php数组

时间:2012-03-25 20:36:28

标签: php arrays slice

我想要做的是我正在创建php数组动态。我不知道数组中的元素。假设我有这样的数组

$mix_array =array('1','3','6','1','5','3','6','5','1','7','3','9');

我想要切片这个数组。我想从上面的数组创建数组,但是需要像

这样的常见元素
$array_1 = ('1','1','1');
$array_2 = ('3','3','3');
$array_3 = ('6','6');
$array_4 = ('5','5');
$array_5 = ('9');
$array_6 = ('7');

首先在原始数组中查找公共元素,然后从该数组中创建其他数组

4 个答案:

答案 0 :(得分:2)

更好地制作符号数组,而不是键入$array_1$array_2。而不是像array('1', '1', '1')那样创建具有相同值的数组,您可以保持像array('1' => 3)

这样的值的数量
$mix_array = array ('1','3','6','1','5','3','6','5','1','7','3','9');
$group_array = array();
foreach ($mix_array as $value) {
    if(isset($group_array[$value])) {
        $group_array[$value]++;
    }
    else {
        $group_array[$value] = 1;
    }
}

print_r($group_array);

结果

Array
(
[1] => 3
[3] => 3
[6] => 2
[5] => 2
[7] => 1
[9] => 1
)

或者正如Josh所说,只需使用array_count_values()

答案 1 :(得分:2)

有几种方法可以做到这一点,这里有一个例子(顺便说一句,效率很低,但如果是一个简短的工作就足够了):

<?php
$mix_array = array('1','3','6','1','5','3','6','5','1','7','3','9');
$sliced_array = array();

foreach($mix_array as $k => $v) {
    if( count($sliced_array[$v]) > 0 ) {
        array_push($sliced_array[$v], $v);
    } else {
        $sliced_array[$v] = array($v);
    }
}
?>

你应该看看http://es.php.net/manual/en/ref.array.php

答案 2 :(得分:1)

您可以使用array_count_values

$array = array_count_values($mix_array);
/* $array will have the following content:
   $array{
       1 => 3
       3 => 3
       6 => 2
     ...
*/

如果您确实需要切片版本,则可以使用array_fill

$result = array();
$i = 0;
for($array as $key=>$value)
    $result[$i++] = array_fill(0,$value,$key);
/* $result[0] = (1,1,1),
   $result[1] = (3,3,3),
     ...
*/

答案 3 :(得分:1)