2017-05-19 124 views
0

我怎样才能使使用for循环下图所示的二维数组:PHP二维数组

$test = array ('D','D','D','D','C','C','D','D'); 

输出应该是这样的:

$output = array( 0 => array('D','D','D','D'), 1 => array('D','D')); 

感谢您的帮助。

这里是我的代码:

$test = array('D','D','D','D', 'C','C','D', 'D'); 
$output = array(); 
$myarray = array(); 
for ($i= 0; $i < count($test); $i++){ 
    if($test[$i] == 'D'){ 
     array_push($myarray , $test[$i]); 
    } else { 
     array_push($output,$myarray); 
    } 
} 

//OUTPUT: $output = (array(0 => array('D','D','D','D'), 1 => array('D','D','D','D')); 
+2

SO不是免费的编码服务。你必须尝试自己解决问题。如果无法正常工作,请发布您尝试的内容,我们会帮助您解决问题。 – Barmar

+1

这应该是一个简单的'foreach'循环。你不断推送'D'元素到一个数组中。当你得到一个“C”值时,你将该数组推入结果数组,并为下一组'D'元素开始一个新数组。 – Barmar

+1

你还没有提供该模式。你想在定义的数组中只找到连续的'D',并将它推入一个新的数组或者什么? –

回答

0

这可以只使用一个foreach循环来实现。

<?php 

$test = array ('D','C','D','D','D','D','C','C','D','D','C','D'); 

$temp = array(); 
$result = array(); 
foreach($test as $value){ 
    if($value != 'D' && !empty($temp)){ 
     array_push($result, $temp); 
     $temp = array(); 
    } 
    else{ 
     array_push($temp, $value); 
    } 
} 

if(!empty($temp)){ 
    array_push($result, $temp); 
} 

print_r($result); 
+0

感谢Chinito和所有......我认为'对每个'是我需要的。=) – eskapadero

+0

@eskapadero'for'和'foreach'是等价的。问题在于,每次开始新运行'D'时,都没有重置临时阵列。 – Barmar

+0

是Barmar,我错过了重置临时阵列..感谢您指出这一点。 – eskapadero