在数组循环之前声明PHP数组项?

时间:2011-06-07 22:04:50

标签: php mysql arrays

我想知道是否有一种方法可以在我的php文件顶部声明一个包含一些'数组内容'的变量,并将它用于某个地方的某个foreach循环中? 例如:     

$variable = 'Here is some text, and here is the value:'.$items->value.'.';


foreach ( $somearray as $items ) {
echo $variable;
}

*注意:我使用ezsql进行数据库操作,因此$ items->值变量....

有意义吗?我只是想让我的文件在其他情况下很容易改变......或者有更好的方法吗?

感谢您寻求帮助。

5 个答案:

答案 0 :(得分:1)

您可以使用eval(),但您应该知道它存在风险,并且您最好了解使用它的后果。

除此之外,你可以像你说的那样使用它,但是逃避美元符号,这样它就不会被作为变量对待,直到foreach,或使用单引号:

$variable = 'Here is some text, and here is the value: {$items->value}';

foreach ( $somearray as $items ) {
    echo eval('return "'.$variable.'";');
}

答案 1 :(得分:1)

  

还是有更好的方法吗?

使用函数/方法:

function formatItems($items)
{
    return 'Here is some text, and here is the value:'.$items->value.'.';
}

foreach ( $somearray as $items ) {
    echo formatItems($items);
}

使用函数可以进行更复杂的格式化。如果它与您的示例一样简单,您可以使用printfas suggested by lonesomeday

如果合适,您可以在Items类定义中使用display / format方法。

答案 2 :(得分:1)

我认为,最好的方法是printf。这不完全是你要求的,但我认为这将使你的代码更清洁。

$variable = 'Here is some text, and here is the value:%s.';

foreach ($somearray as $items) {
    printf($variable, $items->value);
}

作为printf的第二个参数传递的值将被替换为代码。

答案 3 :(得分:0)

您的$items变量将被for循环覆盖 - $variable将不会。

答案 4 :(得分:-1)

$ variable仅设置一次并且当时取值$ items-&gt;值(这可能会导致错误,因为当时$ items不存在并且您正在引用一个字段。< / p>

你想要的是这个:

$variable = 'Here is some text, and here is the value: {$items->value}';

foreach ( $somearray as $items ) {
echo $variable;
}