从两个数组PHP创建一个数组

时间:2016-07-14 07:20:12

标签: php loops

我有两个阵列

$value_array = array('50','40','30','20','10');
$customer = array('300','200','100');

我希望根据客户的价值将价值数组分发给客户,并将其作为limit.adding值,方法是检查它是否超过300,200和100的限制。

但是客户阵列没有朝一个方向工作,它应该首先向前工作,然后向后工作

我想以

的形式生成一个数组
Array
(
    [0] => Array
        (
            [0] => 50
        )

    [1] => Array
        (
            [0] => 40
            [1] => 10
        )

    [2] => Array
        (
            [0] => 30
            [1] => 20
        )

)

首次完成客户循环后,它应该从最后一个开始。数组计数都会改变,我的意思是数。

值数组应检查50 - > 300,40-> 200,30-> 100然后从最后,即20-> 100,10-> 200等。

我试过

$i = 0;
while($i < count($customer)){


    foreach($value_array as $k=>$value){

        $v = 0;
        if($value <= $customer[$i]){
            $customer2[$i][] = $value;
            unset($value_array[$k]);
            $v = 1;
        }
        if($v ==1){
            break;
        }

    }

    //echo $i."<br/>";
    if($i == (count($customer)-1) && (!empty($value_array))){

        $i = 0;
        $customer = array_reverse($customer, true);


    }

$i++;   
}

echo "<pre>";
print_r($customer2);

1 个答案:

答案 0 :(得分:0)

$valueArray = array('50','40','30','20','10','0','-11');
$customer = array('300','200','100');

function parse(array $valueArr, array $customerArr)
{
    $customerCount = count($customerArr);
    $chunkedValueArr = array_chunk($valueArr, $customerCount);
    $temp = array_fill(0, $customerCount, array());

    $i = 0;
    foreach ($chunkedValueArr as $item) {
        foreach ($item as $key => $value) {
            $temp[$key][] = $value;
        }
        $temp = rotateArray($temp);
        $i++;
    }
    // if $i is odd
    if ($i & 1) {
        $temp = rotateArray($temp);
    }

    return $temp;
}

function rotateArray(array $arr)
{
    $rotatedArr = array();

    //set the pointer to the last element and add it to the second array
    array_push($rotatedArr, end($arr));

    //while we have items, get the previous item and add it to the second array
    for($i=0; $i<sizeof($arr)-1; $i++){
        array_push($rotatedArr, prev($arr));
    }

    return $rotatedArr;
}

print_r(parse($valueArray, $customer)); 返回:

Array
(
    [0] => Array
        (
            [0] => 50
            [1] => 0
            [2] => -11
        )

    [1] => Array
        (
            [0] => 40
            [1] => 10
        )

    [2] => Array
        (
            [0] => 30
            [1] => 20
        )

)