动态命名WordPress循环中的数组-添加/获取值

时间:2013-07-09 作者:Simon Cooper

我有一个像第一页,第二页,第三页这样的页面

每个页面都有一个“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
    ?>

1 个回复
SO网友:Johannes Pille

从PHP手册:

变量名遵循与PHP中其他标签相同的规则。有效的变量名以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为正则表达式,可以这样表示:\'[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*\'

因此,在深入研究代码之前:

它需要的不仅仅是$arr_name = str_replace(\' \',\'_\',get_the_title()); 使其故障安全。目前,只要页面标题包含任何非字母数字字符,您的代码就一定会失败。

由于上述原因以及其他原因,我强烈建议您重新考虑总体架构方法。问问自己:为什么首先需要变量?(我看不出有什么原因,我怀疑这是最可行的解决方案,即使存在有效的原因。)

结束

相关推荐

Why posts array is empty?

我尝试获取没有自定义字段集的帖子,或者if set的值与给定的参数不同。这是我的代码: $args_included = array( \'numberposts\' => 1, \'post_type\' => \'post\', \'post_status\' => \'published\', \'meta_query\' => array(&#x