假设我从一个看起来像这样的数组开始:
$array_1 = array(array(1,2,3), array(2,4,5), array(3,6,7));
为简单起见,假设我有一条规则说:删除第一个子数组,然后删除剩余子数组的第一个元素。这将产生结果:
$new_array = array(array(4,5), array(6,7))
然后假设我将问题扩展到更大的数组,如:
$array_2 = array(array(1,2,3,4), array(2,3,4,5), array(3,4,5,6), array(4,5,6,7));
我在这里有相同的规则 - 删除第一个子阵列,然后删除剩余子阵列的第一个元素。 BUT 此规则必须继续,直到最小的子阵列只包含两个元素(如第一个示例中所示)。因此,在第一阶段的过程中,我的新数组看起来像:
$new_array_s1 = array(array(3,4,5), array(4,5,6), array(5,6,7));
但是在最后阶段,完成的数组看起来像:
$new_array_s2 = array(array(5,6), array(6,7));
对于上下文,这是我的$ array_1示例的代码:
<?php
$array_1 = array(array(1,2,3), array(2,4,5), array(3,6,7));
$array_shell = $array_1;
unset($array_shell[0]);
$array_size = count($array_shell);
$i = 0;
$cofactor = array();
while($i < $array_size) {
$el_part_[$i] = $array_1[$i];
unset($el_part_[$i][0]);
$el_part_[$i] = array_values($el_part_[$i]);
array_push($cofactor, $el_part_[$i]);
++$i;
}
echo '<pre>',print_r($cofactor,1),'</pre>';
?>
我的问题:如何推广此代码以适用于N大小的数组?
答案 0 :(得分:3)
您不需要复杂的代码..只需循环并使用array_shift
示例:
print_r(cleanUp($array_1));
功能
function cleanUp($array) {
array_shift($array);
foreach($array as $k => $var) {
is_array($var) && array_shift($array[$k]);
}
return $array;
}
答案 1 :(得分:1)
$num = count($array_1);
for($i=0;$i<=$num;$i++)
{
if($i==0)
unset($array_1[$i]);
else unset($array_1[$i][0]);
}
答案 2 :(得分:1)
建立Baba的答案,使用N个元素数组(假设每个数组包含相同数量的元素):
<?php
$array_1 = array(array(1,2,3,4), array(2,4,5,6), array(3,6,7,8));
$array = $array_1;
while(count($array[0]) > 2)
$array = cleanUp($array);
print_r($array);
function cleanUp($array) {
array_shift($array);
foreach($array as $k => $var) {
is_array($var) && array_shift($array[$k]);
}
return $array;
}
这将继续减少,直到子阵列只有2个元素。
-Ken