如何使用if语句创建PHP规则并推送特定数组?
如何创建PHP if规则并推送某个PHP数组: 假设我有3个来自POST的数值:如何使用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规则,以推送以下数组: 一个近似的例子是
$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);