我想要做的是我正在创建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');
首先在原始数组中查找公共元素,然后从该数组中创建其他数组
答案 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);
}
}
?>
答案 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)
array_slice()// http://php.net/manual/en/function.array-slice.php
或
array_chunk()// http://www.php.net/manual/en/function.array-chunk.php