php小问题,请高手指导,谢谢! 有一组数:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16....n要排成如下:12,34,5,6,78,9,10,11,12,13,14,1516...nphp如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?phpfor ($i=0;$i<10;$i++){ for ($j=pow(2,$i);$j<=pow(2,$i+1)-1;$j++){ echo $j.",";}echo "<br />";}?> $array=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18); function newArray($array){ $count=count($array); $sqr=0; $newarray=array(); for($i=1;$i<$count;$i++){ $temarray=array(); for($c=$sqr;$c<pow(2,$i)-1;$c++) { if($c>=$count) break 2; echo $array[$c].' '; } $sqr=$c; echo '<br>'; } } newArray($array);/*---1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 */ $ar = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);for($i=1; $i<count($ar); $i*=2) $o[] = array_slice($ar, $i-1, $i);print_r($o);Array( [0] => Array ( [0] => 1 ) [1] => Array ( [0] => 2 [1] => 3 ) [2] => Array ( [0] => 4 [1] => 5 [2] => 6 [3] => 7 ) [3] => Array ( [0] => 8 [1] => 9 [2] => 10 [3] => 11 [4] => 12 [5] => 13 [6] => 14 [7] => 15 ) [4] => Array ( [0] => 16 [1] => 17 [2] => 18 )) 你这边是不是每行显示的数值为2的多少次幂!function getMyArray($number){ $result = array(); for( $i=1 ; $i <= $number; $i++ ){ $result[]=$i; } $return = array(); $end=0; $start=0; for( $j=0;$j < $number-1 ; $j++){ $end=pow(2,$j); $end=$end>$number?$number:$end; echo $start." ".$end."<br/>"; $return[]=array_slice($result,$start,$end); $start+=$end; if( $start >= $number ){ break; } } return $return;}print_r(getMyArray(80)); 还是利用原生的函数数组分割函数array_slice比较好:array_slice(PHP 4, PHP 5)array_slice — 从数组中取出一段说明array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] )array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。 如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。 如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。 注意 array_slice() 默认将重置数组的键。自 PHP 5.0.2 起,可以通过将 preserve_keys 设为 TRUE 来改变此行为。 Example #1 array_slice() 例子<?php$input = array("a", "b", "c", "d", "e");$output = array_slice($input, 2); // returns "c", "d", and "e"$output = array_slice($input, -2, 1); // returns "d"$output = array_slice($input, 0, 3); // returns "a", "b", and "c"// note the differences in the array keysprint_r(array_slice($input, 2, -1));print_r(array_slice($input, 2, -1, true));?> 以上例程会输出:Array( [0] => c [1] => d)Array( [2] => c [3] => d) 高手进:zend studio中如何安装redis扩展 应聘的试题 session的问题 求正则表达式 The filename D:\\\\uswer1.xls is not readable php连接Oracle,提示Call to undefined function Ora_Logon() 请帮忙看看这个由阿信的xtree改成的PHP+MYSQL的甚么地方出错了 字符串替换的问题 为什么在用gd2的时候出错一大堆错误? PHP模拟提交的问题 如何命名变量名中的变量? 分页问题
for ($j=pow(2,$i);$j<=pow(2,$i+1)-1;$j++){
echo $j.",";
}
echo "<br />";
}
?>
$array=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);
function newArray($array){
$count=count($array);
$sqr=0;
$newarray=array();
for($i=1;$i<$count;$i++){
$temarray=array();
for($c=$sqr;$c<pow(2,$i)-1;$c++)
{ if($c>=$count)
break 2;
echo $array[$c].' ';
}
$sqr=$c;
echo '<br>';
}
} newArray($array);/*---
1
2 3
4 5 6 7
8 9 10 11 12 13 14 15
16 17 18
*/
for($i=1; $i<count($ar); $i*=2)
$o[] = array_slice($ar, $i-1, $i);
print_r($o);Array
(
[0] => Array
(
[0] => 1
) [1] => Array
(
[0] => 2
[1] => 3
) [2] => Array
(
[0] => 4
[1] => 5
[2] => 6
[3] => 7
) [3] => Array
(
[0] => 8
[1] => 9
[2] => 10
[3] => 11
[4] => 12
[5] => 13
[6] => 14
[7] => 15
) [4] => Array
(
[0] => 16
[1] => 17
[2] => 18
))
$result = array();
for( $i=1 ; $i <= $number; $i++ ){
$result[]=$i;
}
$return = array();
$end=0;
$start=0;
for( $j=0;$j < $number-1 ; $j++){
$end=pow(2,$j);
$end=$end>$number?$number:$end;
echo $start." ".$end."<br/>";
$return[]=array_slice($result,$start,$end);
$start+=$end;
if( $start >= $number ){
break;
}
}
return $return;
}
print_r(getMyArray(80));
还是利用原生的函数数组分割函数array_slice比较好:
array_slice
(PHP 4, PHP 5)array_slice — 从数组中取出一段说明
array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] )
array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。 如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。 如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。 注意 array_slice() 默认将重置数组的键。自 PHP 5.0.2 起,可以通过将 preserve_keys 设为 TRUE 来改变此行为。
Example #1 array_slice() 例子<?php
$input = array("a", "b", "c", "d", "e");$output = array_slice($input, 2); // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3); // returns "a", "b", and "c"// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
?>
以上例程会输出:Array
(
[0] => c
[1] => d
)
Array
(
[2] => c
[3] => d
)