循环内定义的变量不在循环外定义(PHP)
我有一系列变量,我想检查它们是否为0,如果是,我想重新定义变量以等于字符串“Unavailable” 为此,我编写了一个循环:循环内定义的变量不在循环外定义(PHP),php,loops,scope,Php,Loops,Scope,我有一系列变量,我想检查它们是否为0,如果是,我想重新定义变量以等于字符串“Unavailable” 为此,我编写了一个循环: $indicators=array($admitted, $targeted, $cured, $defaulted, $total); foreach($indicators as $indicator) { if($indicator==0) { $indicator='Unavailable'; } } 这将检查数组
$indicators=array($admitted, $targeted, $cured, $defaulted, $total);
foreach($indicators as $indicator)
{
if($indicator==0)
{
$indicator='Unavailable';
}
}
这将检查数组$indicators中的每个变量是否等于零,如果是,则重新定义它
但是,此循环结束后,将使用以下变量生成一个表:
$table1 .= '
<tr>
<td>'.$year.'</td>
<td>'.$targeted.'</td>
<td>'.$admitted.'</td>
<td>'.$total.'</td>
<td>'.$cured.'</td>
<td>'.$defaulted.'</td>
</tr>
';
$table1.='
“.$年。”
“.$targeted。”
“我承认。”
“.$total。”
“.$治愈。”
“.$违约。”
';
其输出包括一些“0”术语-它们永远不会被字符串“Unavailable”替换。
我用以下代码调试了代码:
foreach($indicators as $indicator)
{
echo 'Before: '.$indicator;
if($indicator==0)
{
$indicator='Unavailable';
}
echo '<br />';
echo 'After :'.$indicator;
}
foreach($indicators作为$indicator)
{
回声“之前:”.$指示器;
如果($indicator==0)
{
$indicator='Unavailable';
}
回声“
”;
回声“后:”.$indicator;
}
并确认它正在重新定义变量,但重新定义并没有应用于循环之外
我觉得这是一个涉及范围的问题——我承认我没有很好地理解
我的问题是:如何让在循环中定义的变量应用于该循环之外?
非常感谢您的想法。这是因为您所做的只是更新变量
$indicator
,而不是数组的原始元素
有两种方法可以做到这一点。要么:
或者手动将更改推回阵列:
foreach($indicators as $idx => $indicator)
{
if($indicator==0)
{
$indicators[$idx]='Unavailable';
}
}
这是因为您所做的只是更新变量
$indicator
,而不是数组的原始元素
有两种方法可以做到这一点。要么:
或者手动将更改推回阵列:
foreach($indicators as $idx => $indicator)
{
if($indicator==0)
{
$indicators[$idx]='Unavailable';
}
}
您没有将更改后的值赋回数组 试试这个
foreach($indicators as $key=>$indicator)
{
if($indicator==0)
{
$indicator[$key]='Unavailable';
}
}
您没有将更改后的值赋回数组 试试这个
foreach($indicators as $key=>$indicator)
{
if($indicator==0)
{
$indicator[$key]='Unavailable';
}
}
谢谢,以前不知道通过参考传递!谢谢,以前不知道通过参考传递!