我正在尝试创建一个易于更新的标题/ URL列表,以填充我网站上的各个位置(博客文章)。
我有一个有效的版本,但是知道它可以改进,因此不必在每次添加新的类或博客页面时手动更新数组创建。
到目前为止,我已经搜索了所有问题,但似乎无法在网上找到与此类似的问题。目前,我有一个for循环,该循环基于类构造函数中的迭代变量进行计数:
for ($x = 0; $x <= $pageCount; $x++) {
$pageList[] = '$page' . $x;
}
这样,我就能得到代表变量的正确单词,但不能代表变量中的值。
类看起来像这样:
class BlogPage
{
public $link;
public $name;
public $tags;
public static $counter = 0;
function __construct() {
self::$counter++;
}
}
$page0 = new BlogPage();
$page0->link = 'hike-safe';
$page0->name = 'How to Conquer the Mountains';
$page0->tags = "";
$page1 = new BlogPage();
$page1->link = 'how-to-map';
$page1->name = 'How to Read a Map and Compass';
$page1->tags = "";
$page2 = new BlogPage();
$page2->link = 'test';
$page2->name = 'Test thats a bit longer';
$page2->tags = "";
$pageCount = BlogPage::$counter - 1;
for ($x = 0; $x <= $pageCount; $x++) {
$pageList[] = '$page' . $x;
}
这是我将要手动更新的数组:
$blogPages = array($page2, $page1, $page0);
如何解决这个可变难题?
答案 0 :(得分:0)
如documentation中所述,您可以使用{}
动态地创建var名称。
考虑以下示例:
$a0 = "AAA";
$a1 = "BBB";
$a2 = "CCC";
$cnt = 3;
$res = array();
for($i = 0; $i < $cnt; $i++)
$res[] = ${"a" . $i}; // will assign value of $a0, $a1, $a2 in each iteration
现在$res
将包含:
Array
(
[0] => AAA
[1] => BBB
[2] => CCC
)