列表中的2个或更多数组

时间:2016-11-30 05:18:55

标签: php arrays arraylist

我无法获得我的要求的逻辑。

让我们考虑一下我有一个数组

Array
(
    [0] => 1
    [1] => 1
    [2] => 2
    [3] => 1
    [4] => 3
    [5] => 3
)

如果数组元素与前一个元素匹配,我想在基础上拆分下面的数组。 即,在上面的示例中,[1]处的值与[0]处的值匹配。因此将其放入与[0]相同的数组中。现在检查[2]处的值是否与[1]处的值匹配,如果匹配则将其放入同一个数组中,如果不将其放入不同的数组中。这个过程还在继续。

以下是所需输出的示例。

Array
        (
            [0] => 1
            [1] => 1
         )
 Array
    (
        [0] => 2
     )

     Array
        (
            [0] => 1
         )
     Array
        (
            [0] => 3
            [1] => 3
         )

提前感谢您的帮助。

贾斯汀

2 个答案:

答案 0 :(得分:1)

你可以在检查前一个元素的循环中获得该结果。输出可以是一个数组数组! (或者你喜欢的任何东西......在这里做你的事)

$array1 = array(1, 1, 2, 1, 3, 3);
$output_array=array();
$previous_value="";
$output_array_index=0;
foreach ($array1 as $value) {
    if($value != $previous_value){
        $output_array_index+=1;
    }
    $output_array[$output_array_index][]=$value;
    $previous_value=$value;
}
print_r($output_array);

所以,如果您需要更多指针,请告诉我!数组逻辑很有趣,php会让你做很多,开箱即用。虽然没有涵盖这个具体的需求,但是看看手册中有一分钟,它将为您节省时间,保证http://php.net/manual/en/ref.array.php

答案 1 :(得分:0)

这个问题有点令人困惑,但如果我正确理解它,听起来并不难实现。您需要做的就是有一个检查用户输入的临时数组(或数组列表)。如果该用户输入恰好与先前的输入相同(您可以保留计数器变量并检查是否ArrayList.get(counter) == ArrayList.get(counter-1))。继续向这个临时arrayList添加内容,一旦你有一个不同的数字,只需遍历arraylist并将其添加到一个新数组。

您必须考虑的另一个问题是如何存储所有这些数组。为此,您可能想要创建一个包含Arrays的ArrayList。这样,在找到与上一个输入不同的用户输入后,您可以使用ArrayList类提供的toArray方法,并将其添加到包含所有单独数组的ArrayList中!

希望这有帮助!