如何创建一个不在另一个数组范围内的元素数组

时间:2014-05-27 13:10:50

标签: php

有一个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等等......

有人可以帮忙吗?

2 个答案:

答案 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数组。我不理解它的目的,除非它实际上不是从一个范围生成的,如果是这样的话,也应该改变它