我有一个数组: $ 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函数没有执行。
答案 0 :(得分:1)
首先:
$label$key
错了。应该是:
$label.$key
您需要使用点(。)连接变量。
不明白问题的第二部分。 你能粘贴一个数组的var_dump,以便更清楚地了解结构吗?
答案 1 :(得分:1)
在我看来,你可能会因为一个简单的for循环而混淆foreach。
如果你有一个如下所示的数组:
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'];
}
希望有所帮助。
答案 2 :(得分:0)
你有一个二维数组。 foreach
语句为您迭代第一维。这应该有效:
foreach ( $aPerfdata as $item ) {
$value = $item['value'];
$label = $item['label'];
}
另外,我认为你不应该在你的变量名中包含$
,当然不是在名字前面。
答案 3 :(得分:0)
为什么不做呢
foreach ( $aPerfdata as $value ) {
ImageTTFText($img, $fontSize, $fontRotation, 2, $fontSize+$sz, $oShadow, $fontFile, $value['label'] . ":" . " " . $value['value']);
$sz=$sz+40;
}
除此之外,我认为您对变量变量的使用是不正确的。你应该有类似的东西:
${'value'.$key}
但实际上你应该只使用数组而不是变量变量 - 因为你已经有了一个数组,所以没有必要将它变平(正如我在上面所示)。