Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用if语句创建PHP规则并推送特定数组?_Php_Arrays_If Statement - Fatal编程技术网

如何使用if语句创建PHP规则并推送特定数组?

如何使用if语句创建PHP规则并推送特定数组?,php,arrays,if-statement,Php,Arrays,If Statement,如何创建PHP if规则并推送某个PHP数组: 假设我有3个来自POST的数值: $Tanks= intval($_POST["Tanks"]); $Fish= intval($_POST["Fish"]); $Vegetables= intval($_POST["Vegetables"]); 请求是: Request: Tanks -> 2; Fish -> 4; Vegetables ->1 如果满足上述结果,我想创建PHP IF规则,以推送以下数组: 一个近似的例子是

如何创建PHP if规则并推送某个PHP数组:

假设我有3个来自POST的数值:

$Tanks= intval($_POST["Tanks"]);
$Fish= intval($_POST["Fish"]);
$Vegetables= intval($_POST["Vegetables"]);
请求是:

Request: Tanks -> 2; Fish -> 4; Vegetables ->1
如果满足上述结果,我想创建PHP IF规则,以推送以下数组:

一个近似的例子是(其不直接)

我需要的示例:

  • 示例1:如果客户要求2箱和4条鱼,我想为Tank1->包含2条鱼和Tank2->包含2条鱼创建订单
  • 示例2:如果客户要求2箱和3条鱼,我想为Tank1->包含2条鱼和Tank2->包含1条鱼创建订单
  • 示例3:如果客户要求2个坦克和5条鱼,我想为坦克1->包含3条鱼和坦克2->包含2条鱼创建订单
  • 示例4:如果客户要求3箱6鱼,我想为Tank1->包含2条鱼和Tank2->包含2条鱼和Tank3->包含2条鱼创建订单
……等等


我花了好几天时间研究这件事,希望新年能给我答案。

首先,我是法国人,很抱歉英语不好>这是一个非常有趣的问题:)

下面是一个小的递归函数:

function putFishesToTanks(&$tankArray, $tanks, $fish) {
    $tankNumber = 0;

    for ($i=1; $i<=$tanks; $i++) {
        if (!isset($tankArray[$tankNumber])) {
            $tankArray[$tankNumber] = array();
        }

        if ($fish) {
            $tankArray[$tankNumber][] = 'fish';
            $fish--;
        }

        $tankNumber++;
    }

    if ($fish) {
        putFishesToTanks($tankArray, $tanks, $fish);
    }
}

$tanks = intval($_POST["tanks"]);
$fish = intval($_POST["fish"]);

$tankArray = array();

putFishesToTanks($tankArray, $tanks, $fish);

var_dump($tankArray);
函数putFishesToTanks(&$tankArray,$tanks,$fish){
$tankNumber=0;
对于($i=1;$i请尝试以下方法:

$tanks = 3;

$items = array(
            'fishes' => 5,
            'vegetables' => 3
);

$result = array();

for ($i = 0; $i < $tanks; $i ++) {
    $result['tank_'+$i] = array();

    foreach ($items as $name => $value) {
            $max = floor($value/$tanks);

            if ($value % $tanks >= ($i +1)) {
                $max ++;
            }

            for ($z = 0; $z < $max; $z++) {
                $result['tank_'+$i][] = array('objType' => $name);                        
            }

    }
}

var_dump($result);
$tanks=3;
$items=数组(
“鱼”=>5,
“蔬菜”=>3
);
$result=array();
对于($i=0;$i<$tanks;$i++){
$result['tank_'+$i]=array();
foreach($name=>$value的项目){
$max=地板($value/$tanks);
如果($value%$tanks>=($i+1)){
$max++;
}
对于($z=0;$z<$max;$z++){
$result['tank_'+$i][]=数组('objType'=>$name);
}
}
}
var_dump($结果);
您只需要将正确的值插入到容器和项目中


编辑2:修复了一个错误

我真的不明白你想做什么^^。你可能需要更好地解释一下。我都不明白。我同意。你的帖子有点含糊。我知道你正在创建两个水箱,但是你如何计算鱼和蔬菜放在哪里?我们不能告诉你这些规则是什么。你会知道答案的m、 这是谜题的最后一部分(我理解问题的方式)我觉得有点傻,因为我读了你的帖子大约20次……但仍然不知道你想要什么……对我来说,这根本没有意义……对不起。我想我会和一些更好的猜测者等待一些答案,如果答案仍然正确,我可能会提供一个改进的答案需要。这只适用于所选的1个鱼缸,但如果我选择2个鱼缸和4条鱼,我会收到2个鱼缸的响应,每个鱼缸有2条鱼(我不希望这样,因为总的鱼数是两倍)@RazvanGeorge编辑我的回答返回空白页:(注意,我将POST变量更改为小写。这不是复制粘贴代码。我得到:XML请求中的储罐数量不正确(最小:1个储罐,最大:5个储罐)。在这种情况下,$value将是$items中的项目数量。Foreach遍历数组中的所有项目,取名称和值。我得到:XML请求中的储罐数量不正确(最小:1个油箱,最大:5个油箱)。
var tanks = [
                {
                    'name': 'supertank'
                    'fish': [
                        {
                            'type': 'object',
                            'name': 'myFirstSuperFish'
                        },
                        {
                            'type': 'object',
                            'name': 'mySecondSuperFish'
                        }
                    ],
                    'vegetable': [
                        {
                            'type': 'object',
                            'name': 'goodPotatoe'
                        }
                    ]
                },
                {
                    'name': 'supertank'
                    'fish': [
                        {
                            'type': 'object',
                            'name': 'myFirstSuperFish'
                        },
                        {
                            'type': 'object',
                            'name': 'mySecondSuperFish'
                        }
                    ],
                    'vegetable': [
                        {
                            'type': 'object',
                            'name': 'goodPotatoe'
                        }
                    ]
                }
            ];
function putFishesToTanks(&$tankArray, $tanks, $fish) {
    $tankNumber = 0;

    for ($i=1; $i<=$tanks; $i++) {
        if (!isset($tankArray[$tankNumber])) {
            $tankArray[$tankNumber] = array();
        }

        if ($fish) {
            $tankArray[$tankNumber][] = 'fish';
            $fish--;
        }

        $tankNumber++;
    }

    if ($fish) {
        putFishesToTanks($tankArray, $tanks, $fish);
    }
}

$tanks = intval($_POST["tanks"]);
$fish = intval($_POST["fish"]);

$tankArray = array();

putFishesToTanks($tankArray, $tanks, $fish);

var_dump($tankArray);
$tanks = 3;

$items = array(
            'fishes' => 5,
            'vegetables' => 3
);

$result = array();

for ($i = 0; $i < $tanks; $i ++) {
    $result['tank_'+$i] = array();

    foreach ($items as $name => $value) {
            $max = floor($value/$tanks);

            if ($value % $tanks >= ($i +1)) {
                $max ++;
            }

            for ($z = 0; $z < $max; $z++) {
                $result['tank_'+$i][] = array('objType' => $name);                        
            }

    }
}

var_dump($result);