PHP:foreach变量赋值和引用:how-to?

PHP: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作为二维数组,索引范围从0到n-1

* 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)也应该是。不确定为什么。@用户,那么您需要提供更多关于不工作意味着什么的详细信息