我有一个像第一页,第二页,第三页这样的页面
每个页面都有一个“content”标记。
在Wordpress循环中,我想为每个页面创建一个数组,以页面标题作为数组名称。
然后,我想使用数组名称从数组中添加和获取值。
我这里有一些演示代码。
如果我尝试使用数组名称获取数组的长度,它将返回“0”,并且不会返回键/值。
<?php
$mt_test_args = array(
\'post_type\' => \'page\',
\'tag\' => \'content\',
\'order\' => \'ASC\'
);
$mt_test_loop = new WP_Query($mt_test_args);
if($mt_test_loop->have_posts()):
while($mt_test_loop->have_posts()):
$mt_test_loop->the_post();
// create array for each page
$arr_name = get_the_title();
$arr_name = str_replace(\' \',\'_\',$arr_name);
$$arr_name = array();// The page array
// Add text and color keys to array
$$arr_name[$text] = \'Page Text\';
$$arr_name[$color] = \'red\';
?>
<option><?php the_title(); ?></option>
<?php endwhile; endif; ?>
<?php wp_reset_postdata(); ?>
<?php
print_r($Page_One);
echo count($Page_One); // no echo
echo $Page_One[$text]; // no value
?>
SO网友:Johannes Pille
从PHP手册:
变量名遵循与PHP中其他标签相同的规则。有效的变量名以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为正则表达式,可以这样表示:\'[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*\'
因此,在深入研究代码之前:
它需要的不仅仅是$arr_name = str_replace(\' \',\'_\',get_the_title());
使其故障安全。目前,只要页面标题包含任何非字母数字字符,您的代码就一定会失败。
由于上述原因以及其他原因,我强烈建议您重新考虑总体架构方法。问问自己:为什么首先需要变量?(我看不出有什么原因,我怀疑这是最可行的解决方案,即使存在有效的原因。)