PHP:foreach变量赋值和引用:how-to?
我有一个数组: $aPerfparse作为二维数组,索引范围从0到n-1PHP:foreach变量赋值和引用:how-to?,php,loops,foreach,substitution,Php,Loops,Foreach,Substitution,我有一个数组: $aPerfparse作为二维数组,索引范围从0到n-1 * aPerfparse[index]['label'] - label of the perfdata * ['value'] - actual perfdata * ['uom'] - unit of measurement (might be NULL) 需要遍历每个项目,并根
* aPerfparse[index]['label'] - label of the perfdata
* ['value'] - actual perfdata
* ['uom'] - unit of measurement (might be NULL)
需要遍历每个项目,并根据索引将每个索引的“值”和“标签”设置为一个sep变量
如果没有循环,它将是:
$value0 = $aPerfdata[0]['value'];
$value1 = $aPerfdata[1]['value'];
关于这一点,什么是正确的/不正确的
foreach ( $aPerfdata as $key => $value ) {
$value$key = $aPerfdata[$key]['value'];
$label$key = $aPerfdata[$key]['label'];
}
foreach ( $aPerfdata as $key => $value ) {
ImageTTFText($img, $fontSize, $fontRotation, 2, $fontSize+$sz, $oShadow, $fontFile, $label$key . ":" . " " . $value$key);
sz=$sz+40;
}
类似地,我需要获取存储的$value和$label变量,并在以后的foreach循环中引用它们
如果没有循环,它看起来像:
ImageTTFText($img, $fontSize, $fontRotation, 2, $fontSize+2, $oShadow, $fontFile, $label0 . ":" . " " . $value0);
ImageTTFText($img, $fontSize, $fontRotation, 2, $fontSize+40, $oShadow, $fontFile, $label1 . ":" . " " . $value1);
关于这一点,什么是正确的/不正确的
foreach ( $aPerfdata as $key => $value ) {
$value$key = $aPerfdata[$key]['value'];
$label$key = $aPerfdata[$key]['label'];
}
foreach ( $aPerfdata as $key => $value ) {
ImageTTFText($img, $fontSize, $fontRotation, 2, $fontSize+$sz, $oShadow, $fontFile, $label$key . ":" . " " . $value$key);
sz=$sz+40;
}
谢谢大家!
====
在大家的帮助下,我有以下工作:
foreach ( $aPerfdata as $key => $value )
{
${'label'.$key} = $aPerfdata[$key]['label'];
${'value'.$key} = $aPerfdata[$key]['value'];
}
foreach ( $aPerfdata as $key => $value )
{
ImageTTFText($img, $fontSize, $fontRotation, 2, $fontSize+$sz, $oShadow, $fontFile, ${'label'.$key} . ":" . " " . ${'value'.$key});
$sz=$sz+40;
}
我真的不需要再展平阵列了。我尝试了Mark提到的方法,但是ImageTTFText函数没有执行 您有一个二维数组。
foreach
语句为您迭代第一个维度。这应该起作用:
foreach ( $aPerfdata as $item ) {
$value = $item['value'];
$label = $item['label'];
}
此外,我认为不应该在变量名中包含$
,当然,除了在名称前面之外。首先:
$label$key
这是错误的。应该是:
$label.$key
您需要用一个点(.)连接变量
我不明白问题的第二部分。
你能粘贴一个数组的变量转储,这样我们就可以更清楚地了解数组的结构了吗?为什么不直接粘贴呢
foreach ( $aPerfdata as $value ) {
ImageTTFText($img, $fontSize, $fontRotation, 2, $fontSize+$sz, $oShadow, $fontFile, $value['label'] . ":" . " " . $value['value']);
$sz=$sz+40;
}
除此之外,我认为你使用变量是不正确的。你真的应该有这样的东西:
${'value'.$key}
但实际上,您应该只使用数组而不是变量-而且既然您已经有了一个数组,就没有真正的需要将其展平(正如我在上面所展示的) 在我看来,您可能会将foreach与简单的for循环混淆 如果您有一个如下所示的数组:
Array
(
[0] => Array
(
[label] => red
[value] => 8
[uom] => cm
)
[1] => Array
(
[label] => green
[value] => 6
[uom] => m
)
[2] => Array
(
[label] => blue
[value] => 34
[uom] => m
)
)
您可以按如下所示访问这些键/值
foreach($arr as $array_key => $array_value)
{
// obviously you don't need to assign these. it's just for demonstration
$key = $array_key;
$label = $array_value['label'];
$value = $array_value['value'];
$uom = $array_value['uom'];
}
希望有帮助。
$label$key
=>${'label'.$key}
它不执行是什么意思?你有错误吗?警告?你能给我们看更多你的代码吗?显示的部分是正确的。您显然不理解问题或变量,建议您重新阅读或进行进一步研究。@Mark;是的,当我快速阅读时,我不理解这个问题。你把我带到那里了。但你不能告诉我我需要研究什么;是什么让你认为你可以这样侮辱我的智慧?我没有侮辱你的智慧,我只是建议你做两件事中的一件:更仔细地阅读(似乎完全合理)或进一步研究你的答案——后者可能是微不足道的,只是一种选择“显然我不理解这个问题”。不过,这可能是你的问题。我喜欢这个,起初没有这样做,因为我需要每个变量进行高度/宽度计算,但现在我绕过了这个问题。不幸的是,这没有生成函数所需的正确图像(ImageTTFText)也应该是。不确定为什么。@用户,那么您需要提供更多关于不工作意味着什么的详细信息