通过循环并将新变量添加到多维数组中?在PHP中

通过循环并将新变量添加到多维数组中?在PHP中,php,arrays,json,multidimensional-array,Php,Arrays,Json,Multidimensional Array,对项目进行总结;我正在建立一个网页,你可以输入报警时间和行动时,做的时间满足。这是我的网站脚本和python脚本。python脚本检查配置文件是否满足时间条件,然后执行所需的操作 在收集了所有需要的信息之后,我很难将其放入json文件中。每次用户输入或更改值并提交时,json配置文件都会被覆盖。(为了保留以前的报警时间,它们被放置在表单输入的值中)报警时间可以每天不同,然后每周重复一次。 具体来说,我创建了很多变量,每次输入时都有不同的值。 星期一我会 $intMoH $intMoM $intM

对项目进行总结;我正在建立一个网页,你可以输入报警时间和行动时,做的时间满足。这是我的网站脚本和python脚本。python脚本检查配置文件是否满足时间条件,然后执行所需的操作

在收集了所有需要的信息之后,我很难将其放入json文件中。每次用户输入或更改值并提交时,json配置文件都会被覆盖。(为了保留以前的报警时间,它们被放置在表单输入的值中)报警时间可以每天不同,然后每周重复一次。 具体来说,我创建了很多变量,每次输入时都有不同的值。 星期一我会

$intMoH
$intMoM
$intMoAction
$intMoSource
一周中的所有日子都会重复此操作

然后我想把它们都放在一个数组中,这样它们就可以被编码并转换成json格式

json格式应该类似于这样

[{
    "wake": [{
        "id": 1,
        "MoM": 8,
        "MoH": 30,
        "MoAction": "music",
        "MoSource": "music.mp3",
        "TuM": 7,
        "TuH": 30,
        "TuAction":"music",
        "TuSource":"music2.mp3"
    }]
}]
我不会创建一个名为Mo的新元素,然后将所有项作为其子元素,因为我被告知这将使将其放入数组更容易(维度更少)

我的php页面构建一个表单,然后提交给自己(不使用ajax,因为我不知道它)

$arrWeek=数组(“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”);
$arrWeekSimple=数组(“Mo”、“Tu”、“We”、“Tu”、“Th”、“Fr”、“Sa”、“Su”);
//$mowake=$_POST['mowake'];
$strName=“唤醒”;
对于($i=0;$i1,$arrWeekSimple[$i]。$H“=>${”int.$arrWeekSimple[$i]。$H“},$arrWeekSimple[$i]。$M“=>${”int.$arrWeekSimple[$i]。$arrWeekSimple[$i]。$Action“=>$$arrWeekSimple[$i]。$Action”},$arrWeekSimple[$i]。$i]。$Source“},$Source”=>$$arrWeekSimple[$i]。$Source})
数组推送($arrNewJson,$arrPush);
}
回声“阵列制作
”; 打印(arrNewJson); $toTransfer=json_encode($arrNewJson,true); 文件内容(“config.json”,$toTransfer);
我所要做的是将所有信息放入多维数组中,然后将其编码为json格式并替换文件。我如何度过每一天并将其添加到阵列中?经过研究,似乎因为循环,我应该使用array_push,但似乎不知道如何使用它。 我还想知道在json文件中,是否可以更轻松地转到另一个维度并添加一周中的天数


非常感谢您的帮助。我希望所有这些都是可以理解的:-)谢谢你的时间。

这一点都不漂亮,也不会使事情过于复杂,但这确实有效。 除非你有类似的问题,否则不要麻烦

$arrWeek = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saterday","Sunday");
$arrWeekSimple = array("Mo","Tu","We","Tu","Th","Fr","Sa","Su");
//$mowakeh = $_POST['mowakeh'];



$strName = "Wake";
$arrContent=array();
$arrAlarms=array("id"=>1,"name"=>$strName);
/*

$arrContents=[0]Monday=MOM,MOH
*/
for( $i = 0; $i<6; $i++ )
{
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"int" . $arrWeekSimple[$i] ."H"}  = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"int" . $arrWeekSimple[$i] ."M"}  = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"str" . $arrWeekSimple[$i] ."Action"} = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"str" . $arrWeekSimple[$i] ."Source"} = $_POST[$tempPost];
/*

What values would look like
$intMoH = 20;
$intMoM = 30;
$strMoAction = 5;
$strMoSource = 7;
*/
echo "<br>Day?";
echo $arrWeek[$i];
${$arrWeek[$i]}= array($arrWeekSimple[$i]."H"=>${"int".$arrWeekSimple[$i]."H"}, $arrWeekSimple[$i]."M"=>${"int".$arrWeekSimple[$i]."M"}, $arrWeekSimple[$i]."Action"=>${"str".$arrWeekSimple[$i]."Action"},$arrWeekSimple[$i]."Source"=>${"str".$arrWeekSimple[$i]."Source"});
echo "<br>For this day array  ";
print_r(${$arrWeek[$i]});

//$strCurrentDay=$arrWeek[$i];
$arrContent[$arrWeek[$i]]=${$arrWeek[$i]};
//array_push($arrContent,${$arrWeek[$i]});
echo "<br>arrcontent  ";
print_r($arrContent);

}
$arrAlarms["content"]=$arrContent;

echo "Array made <br>";
print_r($arrAlarms);
需要记住的几件事: 数组_push()不允许设置密钥。 ${$arrWeek[$i]}是一个数组,它被分配到另一个数组,其中键为$arrWeek[$i]。 当使用$arr=array(“id”=>1,“name”=$name)创建数组时,不要愚蠢地忘记它始终是$arr=array(“id”=>1,“name”=>$name)。 id键也必须是字符串

来源

您能否通过
var\u dump($\u post)发布
$\u post
包含的内容的示例?使用
${..}
构造变量的方式很可能是一种疯狂的方法:)首先将这些变量作为数组键操作到数组上,然后创建一组全局范围变量,我怀疑有一种更直接的方法可以将
$\u POST
转换为json输出所需的结构。我同意我可能把事情复杂化了。。。虽然我将尝试从一开始就将它们更改为数组,这可能会很好,但我不明白为什么应该使用全局变量?我正在添加一个不需要的变量。我将$\u POST转换为一个var,然后将其放入一个数组中。谢谢你的评论。实际上,最后一个要发布的值将来将是字符串
$arrWeek = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saterday","Sunday");
$arrWeekSimple = array("Mo","Tu","We","Tu","Th","Fr","Sa","Su");
//$mowakeh = $_POST['mowakeh'];



$strName = "Wake";
$arrContent=array();
$arrAlarms=array("id"=>1,"name"=>$strName);
/*

$arrContents=[0]Monday=MOM,MOH
*/
for( $i = 0; $i<6; $i++ )
{
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"int" . $arrWeekSimple[$i] ."H"}  = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"int" . $arrWeekSimple[$i] ."M"}  = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"str" . $arrWeekSimple[$i] ."Action"} = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"str" . $arrWeekSimple[$i] ."Source"} = $_POST[$tempPost];
/*

What values would look like
$intMoH = 20;
$intMoM = 30;
$strMoAction = 5;
$strMoSource = 7;
*/
echo "<br>Day?";
echo $arrWeek[$i];
${$arrWeek[$i]}= array($arrWeekSimple[$i]."H"=>${"int".$arrWeekSimple[$i]."H"}, $arrWeekSimple[$i]."M"=>${"int".$arrWeekSimple[$i]."M"}, $arrWeekSimple[$i]."Action"=>${"str".$arrWeekSimple[$i]."Action"},$arrWeekSimple[$i]."Source"=>${"str".$arrWeekSimple[$i]."Source"});
echo "<br>For this day array  ";
print_r(${$arrWeek[$i]});

//$strCurrentDay=$arrWeek[$i];
$arrContent[$arrWeek[$i]]=${$arrWeek[$i]};
//array_push($arrContent,${$arrWeek[$i]});
echo "<br>arrcontent  ";
print_r($arrContent);

}
$arrAlarms["content"]=$arrContent;

echo "Array made <br>";
print_r($arrAlarms);
Day?Monday
For this day array Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) )
Day?Tuesday
For this day array Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) )
Day?Wednesday
For this day array Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Wednesday] => Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 ) )
Day?Thursday
For this day array Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Wednesday] => Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 ) [Thursday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) )
Day?Friday
For this day array Array ( [ThH] => 5 [ThM] => 5 [ThAction] => 5 [ThSource] => 5 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Wednesday] => Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 ) [Thursday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Friday] => Array ( [ThH] => 5 [ThM] => 5 [ThAction] => 5 [ThSource] => 5 ) )
Day?Saterday
For this day array Array ( [FrH] => 6 [FrM] => 6 [FrAction] => 6 [FrSource] => 6 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Wednesday] => Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 ) [Thursday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Friday] => Array ( [ThH] => 5 [ThM] => 5 [ThAction] => 5 [ThSource] => 5 ) [Saterday] => Array ( [FrH] => 6 [FrM] => 6 [FrAction] => 6 [FrSource] => 6 ) ) Array made
Array ( [id] => 1 [name] => Wake [content] => Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Wednesday] => Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 ) [Thursday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Friday] => Array ( [ThH] => 5 [ThM] => 5 [ThAction] => 5 [ThSource] => 5 ) [Saterday] => Array ( [FrH] => 6 [FrM] => 6 [FrAction] => 6 [FrSource] => 6 ) ) )