0

我正在使用 while 循环,我需要能够将变量的值分配给新变量的名称。这是循环($slide_number 总是返回一个数字):

$slide_number = theme_get_setting('slides_number');
$count = '1';

while ($count <= $slide_number) {
  $slide_path = theme_get_setting('slide_path_'.$count.'');
    if (file_uri_scheme($slide_path) == 'public') {
      $slide_path = file_uri_target($slide_path);
    }  
  $count++;  
}

假设 $slide_number 为 2。我需要生成 $slide_path_1 和 $slide_path_2,那么如何将 $count 变量添加到 $slide_path 以创建 $slide_path_1 和 $slide_path_2?

4

5 回答 5

2

虽然我不推荐变量变量,但应该这样做:

$slide_path = "slide_path_" . $slide_count;
echo $$slide_path;
于 2012-09-26T18:56:27.543 回答
2

参考:

${'slide_path' . $count}
于 2012-09-26T18:57:06.193 回答
0

你正在尝试做的是非常糟糕的做法......使用数组来代替。查看数组的工作原理,您可以将所有值一起附加到一个列表中,然后您可以根据需要查看它们。考虑以下:

$slide_number = theme_get_setting('slides_number');
$count = '1';
$array_of_slides = array();

while ($count <= $slide_number) {
   $slide_path = theme_get_setting('slide_path_'.$count.'');
   if (file_uri_scheme($slide_path) == 'public') {

     $slide_path = file_uri_target($slide_path);

     // this line appends your value to the end of the array
     $array_of_slides[] = file_uri_target($slide_path);
   }  
   $count++;  
}

// this will print out the array so that you can see it
var_dump($array_of_slides);

旁注:您尝试这样做的原因是这种不良做法是因为如果您声明了 40 亿个变量,您的程序肯定会崩溃,并且可能会导致您的操作系统崩溃。

于 2012-09-26T19:03:00.317 回答
0
$count=1;
$var1='$slide_path_'.$count;
$$var1="here you go";

这将按名称创建一个变量$slide_path_1并为其分配“here you go”

http://php.net/manual/en/language.variables.variable.php

于 2012-09-26T18:57:13.190 回答
0

我很困惑。如果您只需要上一次循环运行的信息,请在循环末尾有一个变量来保存该信息。或者将所有这些加载到一个声明的数组中,然后在加载它之后用它做你想做的事情。

于 2012-09-26T18:58:22.970 回答