Php 基于分隔符从另一个数组拆分数组

Php 基于分隔符从另一个数组拆分数组,php,arrays,Php,Arrays,我正在试验PHP,我想知道是否有一种简单的方法可以实现这一点: 我有两个阵列: $array1 = ('A', 'B', '$', 'C', 'D', 'E', '%', 'F', 'G', 'H', 'I', '&', 'J') $array2 =('$', '%', '&') 如何在array2中定义的分隔符之间获得4个单独的数组?换句话说,我应该得到4个数组: ('A', 'B') ('C', 'D', 'E') ('F', 'G', 'H', 'I') ('J')

我正在试验PHP,我想知道是否有一种简单的方法可以实现这一点:

我有两个阵列:

$array1 = ('A', 'B', '$', 'C', 'D', 'E', '%', 'F', 'G', 'H', 'I', '&', 'J')
$array2  =('$', '%', '&')
如何在array2中定义的分隔符之间获得4个单独的数组?换句话说,我应该得到4个数组:

('A', 'B')
('C', 'D', 'E')
('F', 'G', 'H', 'I')
('J')
这个怎么样

<?php

/**
 * @author - Sephedo
 * @for - ImTryinl @ Stackoverflow
 * @question - http://stackoverflow.com/questions/18705886/splitting-an-array-based-on-delimiters-from-another-array 
 */

$array1 = array('A', 'B', '$', 'C', 'D', 'E', '%', 'F', 'G', 'H', 'I', '&', 'J');
$array2 = array('$', '%', '&');

$return = array();
$x = 0;

foreach( $array1 as $value )
{
    if( in_array( $value, $array2 ) )
    {
        $x++;
    }
    else
    {
        $return[$x][] = $value;
    }
}

var_dump( $return );

?>
这个怎么样

<?php

/**
 * @author - Sephedo
 * @for - ImTryinl @ Stackoverflow
 * @question - http://stackoverflow.com/questions/18705886/splitting-an-array-based-on-delimiters-from-another-array 
 */

$array1 = array('A', 'B', '$', 'C', 'D', 'E', '%', 'F', 'G', 'H', 'I', '&', 'J');
$array2 = array('$', '%', '&');

$return = array();
$x = 0;

foreach( $array1 as $value )
{
    if( in_array( $value, $array2 ) )
    {
        $x++;
    }
    else
    {
        $return[$x][] = $value;
    }
}

var_dump( $return );

?>
这应该起作用:

function splitArrays($source, $delimiters) {
    $result = array();
    $result[] = array();
    $resultIndex = 0;
    foreach($source as $value) {
        if(in_array($value, $delimiters)) {
            $result[] = array();
            $resultIndex++;
        }
        else {
            $result[$resultIndex][] = $value;
        }
    }
}
这应该起作用:

function splitArrays($source, $delimiters) {
    $result = array();
    $result[] = array();
    $resultIndex = 0;
    foreach($source as $value) {
        if(in_array($value, $delimiters)) {
            $result[] = array();
            $resultIndex++;
        }
        else {
            $result[$resultIndex][] = $value;
        }
    }
}
请回答:

请回答:

输出:

Array
(
    [0] => Array
        (
            [0] => A
            [1] => B
        )

    [1] => Array
        (
            [0] => C
            [1] => D
            [2] => E
        )

    [2] => Array
        (
            [0] => F
            [1] => G
            [2] => H
            [3] => I
        )

)
输出:

Array
(
    [0] => Array
        (
            [0] => A
            [1] => B
        )

    [1] => Array
        (
            [0] => C
            [1] => D
            [2] => E
        )

    [2] => Array
        (
            [0] => F
            [1] => G
            [2] => H
            [3] => I
        )

)

将帮助你…我不认为只有
array\u slice
会起作用;在您的分隔符集上使用preg_split(),然后在每个结果上使用str_split()将对您有所帮助…我不认为只有
array_slice
会起作用;在您的分隔符集上使用preg_split(),然后在每个结果上使用str_split()简单高效。简单高效。
$array1 = array('A', 'B', '$', 'C', 'D', 'E', '%', 'F', 'G', 'H', 'I', '&', 'J');
$array2 = array('$', '%', '&');

$result = array_map(
    'str_split',
    preg_split(
        '/[' . preg_quote(implode('', $array2)) . ']/', 
        implode('', $array1)
    )
);

var_dump($result);