0

我正在尝试使用 PHP,我想知道是否有一种简单的方法可以做到这一点:

我有 2 个数组:

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

如何获得 4 个位于 array2 中定义的分隔符之间的单独数组?换句话说,我应该得到 4 个数组:

('A', 'B')
('C', 'D', 'E')
('F', 'G', 'H', 'I')
('J')
4

5 回答 5

3

这个怎么样?

<?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 );

?>

测试并返回

array
  0 => 
    array
      0 => string 'A' (length=1)
      1 => string 'B' (length=1)
  1 => 
    array
      0 => string 'C' (length=1)
      1 => string 'D' (length=1)
      2 => string 'E' (length=1)
  2 => 
    array
      0 => string 'F' (length=1)
      1 => string 'G' (length=1)
      2 => string 'H' (length=1)
      3 => string 'I' (length=1)
  3 => 
    array
      0 => string 'J' (length=1)
于 2013-09-09T20:00:09.050 回答
1
$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);
于 2013-09-09T20:20:11.403 回答
0
$array1 = array('A', 'B', '$', 'C', 'D', 'E', '%', 'F', 'G', 'H', 'I', '&', 'J');
$array2  =array('$', '%', '&');
$results = array();

$start = 0;
foreach($array2 as $key => $val){
 $results[] = array_slice($array1, $start, array_search($val, $array1)-$start);
 $start = array_search($val, $array1)+1;
}
print_r($results);

输出:

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
        )

)
于 2013-09-09T20:06:41.407 回答
0

这应该有效:

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;
        }
    }
}
于 2013-09-09T20:01:07.307 回答
0

在这里回答:http: //codepad.org/dieF4Mbe

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

foreach ($array1 as $char) {



    if (!in_array($char, $array2)) {

        $final_arrays[$curr_array][] = $char;

    } else {

        $curr_array++;
    }
}

print_r($final_arrays);
于 2013-09-09T20:01:48.637 回答