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


How to make an array of elements which not in range of another array

有一个从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之前什么都不会发生。同样,这个值将会开始,然后到400,然后停止,然后我得到200-400。在那之后,直到500年什么都不会发生。还是从500开始,到700结束。所以我将第三个元素设为500-700等等…

有人能帮忙吗?

如果你想让你的范围作为数组的字符串元素,试试这个:

<?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);
?>

你可以试试这样

<?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数组做任何事情。我不明白它的目的,除非它实际上不是从一个范围生成的,如果是这样,这也应该改变