【问题标题】:how to slice php array如何切片php数组
【发布时间】:2012-04-09 11:11:35
【问题描述】:

我想要做的是我正在创建 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');

首先在原始数组中找到共同的元素,然后从中创建其他数组

【问题讨论】:

  • array_slice(),尝试相交但不够好

标签: php arrays slice


【解决方案1】:

最好制作联想数组,而不是输入$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
)

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

【讨论】:

【解决方案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

【讨论】:

    【解决方案3】:

    您可以为此使用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),
         ...
    */
    

    【讨论】:

      【解决方案4】:
      猜你喜欢
      • 2012-11-10
      • 2020-08-24
      • 2019-01-08
      • 2014-08-22
      • 2014-08-25
      • 2013-04-12
      • 2014-03-10
      • 2014-08-09
      • 2012-01-27
      相关资源
      最近更新 更多