我有一个JSON数组,我从每个$vars
中提取值。在JSON数据中将是我正在寻找的一些关键词。我有一个if
else
看起来像:
(演示目的)
if( $FullName == $Data[$c]['manager'] $FullName == $Data[$c]['leader'] || $FullName == $Data[$c]['helper']) {
$cheapLabor = 'NO';
} else {
$cheapLabor = 'YES';
}
然而,这很有用,现在我想更具体地定义一些状态点上的if
else
点,这些点代表了他们的雇佣状态。每个Emp Status都基于一个组。
我需要从食物链的顶部检查,然后向下检查是否status = x
。如果是,那么$cheapLabor = 'y'; else $cheapLabor = 'z';
我尝试过这样做,但我似乎无法让它发挥作用。以下是我的工作内容:
$repData = json_decode($json, TRUE);
$c = 0;
$var = $repData[$c]['column'];
if($FullName == $repData[$c]['ceo']) {
$groups = '[13]';
} else {
$groups = '[5]';
}
if($FullName == $repData[$c]['director']) {
$groups = '[10]';
} else {
$groups = '[5]';
}
if($FullName == $repData[$c]['regional']) {
$groups = '[9]';
} else {
$groups = '[5]';
}
if($FullName == $repData[$c]['project_manager']) {
$groups = '[8]';
} else {
$groups = '[]';
}
if($FullName == $repData[$c]['team_leader']) {
$groups = '[6]';
} else {
$groups = '[5]';
}
if($FullName == $repData[$c]['rae']) {
$groups = '[5]';
} else {
$staus = '[5]';
}
Shomz回答部分工作......
$groups = '[4]'; // new hire group default, to be overwritten if a user has the correct title within Table.
$roleGroups = array(
'regional' => '[7]',
'team_leader' => '[6]',
'RAE' => '[5]'
);
foreach ($roleGroups as $role => $groups) { // go through all the Position Titles
if ($FullName == $repData[$c][$role]) { // see if there's a match
$repGroup = $groups; // if so, assign the group
}
}
它正确设置了team_leader和region,但其他任何东西只是将其设置为区域组。
刚才意识到它实际上重写了这个价值。
答案 0 :(得分:2)
您的代码会在每个if语句中覆盖$groups
。您可能希望在switch / case语句中重写它,默认值为[5]
。
假设第一个if为true,因此$FullName == $repData[$c]['ceo']
为真,$groups
变为[13]
。在下一行中,有两种选择:
在两个情况下,$groups
将获得[10]
或[5]
的值,这意味着无论上述声明中发生了什么,此声明会覆盖它。因此,只有你的最后一个if语句能够产生你可能期望的结果。
“每个角色只有一个小组”
在这种情况下,一个简单的switch / case语句将起作用:
switch($FullName){
case ($repData[$c]['ceo']):
$groups = '[13]';
break;
case ($repData[$c]['director']):
$groups = '[10]';
break;
// etc... for other roles
default:
$groups = '[5]';
break;
}
或者你可以更简单,并使用关联数组将角色与组号结合起来。例如:
$roleGroups = array('ceo' => '[13]', 'director' => '[15]', etc);
然后看看是否匹配:
$groups = '[5]'; // default, to be overwritten if a role is found below
foreach ($roleGroups as $role => $group) { // go through all the groups
if ($FullName == $repData[$c][$role]) { // see if there's a match
$groups = $group; // if so, assign the group
}
}
希望这是有道理的。无论哪种方式,如果找到角色,$groups
将具有角色的编号,否则为5。