有一个0到10000之间的数字
$a = array();
$a = range(0,10000);
我有一些来自数据库的动态值在数组中,如
$b = array("100-200","400-500","700-900");
所以基本上我想要一个看起来像
的数组array("0-100","200-400","500-700","900-10000");
例如 - >如果我从0开始一个值,那么它将在100上断。所以我将得到0-100作为数组的第一个元素,然后在200之前什么都不会发生。再买200这个值将开始并转到400并且将停止然后我得到200-400.A之后什么都不会发生,直到500.it将再次从500开始并将在700停止。所以我将得到第三元素为500-700等等......
有人可以帮忙吗?
答案 0 :(得分:2)
如果你想让你的范围成为数组的字符串元素,试试这个:
<?php
$b = array("400-500","700-900","100-200");
asort($b);//new line to sort the ranges
$MIN = 0;
foreach($b as $rang){
$limits = explode('-', $rang);
$result[] = $MIN." - ".$limits[0];
$MIN = $limits[1];
}
$result[] = $MIN." - 10000";
print_r($result);
?>
答案 1 :(得分:0)
您可以尝试这样的事情
<?php
$b = array( "100-200","400-500","700-900" );
$c = array();
$starting = 0;
$ending = 100000;
$last = $starting;
$a = array(); // not being used
$a = range( $starting, $ending ); // not being used
foreach( $b as $k => $v )
{
$values = explode( '-' , $v);
if ( $values[0] > $starting && $values[0] < $ending )
{
$c[] = $last.'-'.$values[0];
$last = $values[1];
if ( $last <= $ending && $k == count( $b ) -1 )
{
$c[] = $last.'-'.$ending;
}
}
}
print_r( $c );
?>
请记住,我没有使用原始$a
数组。我不理解它的目的,除非它实际上不是从一个范围生成的,如果是这样的话,也应该改变它