繁体   English   中英

PHP:foreach变量赋值和引用:操作方法?

[英]PHP: foreach variable assignment and referencing: how-to?

我有一个数组:$ 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'];   
}

同样,我需要获取那些存储的$ 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 ) {  
    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函数没有执行。

首先:

$label$key

是错的。 应该:

$label.$key

您需要使用点(。)连接变量。

不明白问题的第二部分。 你能粘贴一个数组的var_dump,以便更清楚地了解结构吗?

它看起来像你可能会混淆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'];
}

希望有所帮助。

你有一个二维数组。 foreach语句为您迭代第一维。 这应该工作:

foreach ( $aPerfdata as $item ) {  
    $value = $item['value'];  
    $label = $item['label'];   
}

另外,我认为你不应该在你的变量名中包含$ ,当然除了名字前面。

为什么不这样做呢

foreach ( $aPerfdata as $value ) {  
    ImageTTFText($img, $fontSize, $fontRotation, 2, $fontSize+$sz, $oShadow, $fontFile, $value['label'] . ":" . " " . $value['value']);  
    $sz=$sz+40;  
} 

除其他事项外,我认为你对变量变量的使用是不正确的。 你应该有类似的东西:

${'value'.$key}

但实际上你应该只使用一个数组而不是变量变量 - 因为你已经有了一个数组,所以没有必要将它变平(正如我在上面所示)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM