【发布时间】:2011-10-02 03:33:12
【问题描述】:
我在 Wordpress 模板页面上构建了一组图像 URL,如下所示:
<?php $attachments = get_posts(array(
'order' => 'ASC',
'post_type' => 'attachment',
'post_parent' => $post->ID,
'post_mime_type' => 'image',
'post_status' => null,
'numberposts' => -1,
));
if ($attachments) {
//set up array of urls
$image_urls = array();
foreach($attachments as $attachment){
$image_object = wp_get_attachment_image_src($attachment->ID,'full');
$image_urls[] = $image_object[0];
}
} ?>
然后,在footer.php 中,我想像这样打印 Javascript 的数组:
<script>
var images = [<?php $num_urls = count($image_urls);
$num = 1;
foreach($image_urls as $image_url) {
echo $image_url;
$num++;
if($num<$num_urls) echo ', ';
} ?>];
</script>
我错误地认为,在连接模板页面和footer.php 时,PHP 会将脚本视为连续的,并记住变量值,但事实并非如此,因为它返回:
警告:为 foreach() 提供的参数无效
我如何声明 $image_urls 数组,以便我以后可以引用它,而没有范围/命名空间的危险?
PS 除了后一段代码的最后一项之外,还有更好的方法来添加逗号吗?
【问题讨论】:
-
您确定
$image_urls已设置,还是循环出错?试试isset($image_urls)。 -
是的,我确定。使用
<?php if(isset($image_urls)) echo 'yep!'; ?>它什么也没返回。 -
能否请您发布整个脚本,以便我们查看在哪里。如果他们在同一页面上,这应该可以工作。如果它们在不同的页面上,我不知道你认为它会如何工作。
-
@walkerneo 它们位于两个页面上,由 Wordpress 的原生
get_footer()方法连接起来,并作为一个 HTML 片段。所以我并不清楚这些页面是否会有单独的范围。 -
@IsaacLubow,哦,有道理。