需要帮助才能弄清楚。在通过ajax单击提交后,我有一个JSON数组转到一个php文件中。一旦在php端解码,如下所示:
数组 =>阵列( ID => 409 ChangeType => CHANGE_SEAT_TO Name => John Doe CHANGE_SEAT_TO => => setTo => 4-2 PreviousSeatValue => PreviousSeatNewValue => Y)1 =>数组( ID => 278 ChangeType =>命名为John Test Seat 4-1 en21# 4-3 en23#YPreviousSeatNewValue => Y)2 =>阵列( ID => 305 ChangeType => REMOVESEAT Name => John Blue Seat => 3-6 setTo => 0)3 =>阵列( ID => 314 ChangeType => CHANGE_SEAT_TO Name => John Red Seat => 3-6 en22 20#Y en22#Y)
主要目标:
我试图做的是循环遍历所有数组,如果变更类型匹配一个字符串(“CHANGE_SEAT_TO”或"REMOVESEAT"),则执行一条SQL语句。在循环期间,Im在为匹配数组中的不同键值分配变量时遇到问题。以下是我到目前为止所拥有的:
$obj = json_decode($_POST['myData'], TRUE);
foreach ($obj as $innerArray){
foreach($innerArray as $key => $value){
$$key = $value;
if($value === "CHANGE_SEAT_TO"){
echo $ID;
echo $setTo;
}
if($value === "REMOVESEAT"){
echo $ID;
echo $setTo;
}
}
}
现在,很明显,这只是为了测试目的而设置的(在成功的ajax之后,我在控制台日志中显示了回声)。使用此设置,我能够成功地回显匹配元素的ID,但是如果我尝试任何其他元素,则变量是未定义的。有人能解释为什么会发生这种情况,并对主要目标提出建议吗?提前谢谢。
发布于 2016-01-27 16:36:47
您只需要一个foreach()
,检查修改后的代码
<?php
$obj = json_decode($_POST['myData'], TRUE);
foreach ($obj as $innerArray){
if($innerArray['ChangeType'] == 'CHANGE_SEAT_TO') {
// do stuff
$id = $innerArray['ID'];
// get rest of values in same way
} else if($innerArray['ChangeType'] == 'REMOVESEAT') {
// do stuff
$id = $innerArray['ID'];
// get rest of values in same way
}
}
发布于 2016-01-27 16:37:32
试着做这样的事情:
foreach ($obj as $value) {
if ($value['ChangeType'] == 'CHANGE_SEAT_TO') {
echo $value['ID'];
echo $value['setTo'];
} elseif ($value['ChangeType'] == 'REMOVESEAT') {
echo $value['ID'];
echo $value['setTo'];
}
}
https://stackoverflow.com/questions/35042792
复制相似问题