0

我想访问一个名为$item1$item2的变量$item3

我想在每次都在的 for 循环$i中访问这个变量。++使用$item.$i或类似的东西。但是使用该代码意味着我正在尝试加入两个变量的内容,并且没有名为 $item 的变量。

4

6 回答 6

4

数组:更好的方法

虽然 PHP 确实允许您从各种其他值构建动态变量名,但在这种情况下您可能不应该这样做。在我看来,数组更适合您:

$items = array( 0, 12, 34 );

然后,您可以单独访问每个值:

echo $items[0]; // 0
echo $items[1]; // 12

或者循环整个集合:

foreach ( $items as $number ) {
  echo $number; // 1st: 0, 2nd: 12, 3rd: 34
}

合并多个数组

您在 OP 的评论中指出$item1through$item3已经是数组。如果您愿意,可以将它们全部合并到一个数组中array_merge(),如下所示:

$item1 = array( 1, 2 );
$item2 = array( 3, 4 );
$item3 = array( 5, 6 );

$newAr = array_merge( $item1, $item2, $item3 );

print_r( $newAr );

哪个输出:

Array
(
  [0] => 1
  [1] => 2
  [2] => 3
  [3] => 4
  [4] => 5
  [5] => 6
)

如果必须:动态变量名称

为了完整起见,如果您要通过动态构造变量名称来解决问题,您可以执行以下操作:

$item1 = 12;
$item2 = 23;
$item3 = 42;

for ( $i = 1; $i <= 3; $i++ ) {
  echo ${"item".$i} . PHP_EOL;
}
于 2012-05-16T16:33:39.660 回答
2

将要访问的变量名构建到另一个变量中,然后使用变量变量语法

<?php
   $item1 = 'a';
   $item2 = 'b';
   $item3 = 'c';

   for ($i = 1; $i<=3; $i++) {
       $varname = 'item' . $i;
       echo $$varname;
   }
?>

输出:

美国广播公司

请注意,还有其他方法可以做到这一点,请参阅手册。

于 2012-05-16T16:31:53.920 回答
0
for ($i =1;$i<4;$i++){
    $var = 'item'.$i;
    echo $$var;
}

在这里,您使用双 $ 来创建变量 variable

于 2012-05-16T16:29:14.380 回答
0

使用${'item'.$i}
If $i == 1,那么您将访问$item1.

但在你的情况下最好使用数组。

于 2012-05-16T16:30:04.037 回答
0

您可以使用数组而不是单个变量吗?然后您可以通过索引值引用数组元素i

$items = array();

$i = 1;
$items[$i] = "foo";

$i++;
$items[$i] = "bah";

echo $items[1], $items[2];     // gives "foobah"
于 2012-05-16T16:31:04.653 回答
0

有点晚了,接受的答案是正确的方法,但是 PHP 确实允许您以 OP 描述的方式访问变量变量名称:

<?php
$item1 = 'a';
$item2 = 'b';
$item3 = 'c';
for($i=1;$i<=3;$i++)
    echo ${"item$i"}; //Outputs: abc
?>
于 2012-05-16T16:46:42.103 回答