在循环外部使用循环值

时间:2015-07-07 21:59:19

标签: php arrays loops

我想在循环之外使用此循环的值。

            $args = array(
                'post_type' => 'attachment',
                'posts_per_page' => -1,
                'numberposts' => null,
            );

            if ($attachments) {
                foreach ($attachments as $attachment) {
                    $image_id = get_attachment_link($attachment->ID);
                    echo ',';
                }
            }

当它循环时,它会以逗号分隔出一系列图像ID。

 1, 2, 3, 4

完成循环后,我想使用该序列,因为它在上面的函数中吐出。

get_jig(array('ids' => $image_id));

目前,当我为$image_id使用循环变量时,它只提供最后一个ID,当我需要所有这些时。为noobness道歉。我明白这对你们中的一些人来说可能很容易,我仍然围绕着PHP。

2 个答案:

答案 0 :(得分:1)

看起来你应该能够在循环之前创建一个数组,并在你去的时候将ID插入其中。

$ids = array(); // Create an empty array here
if ($attachments) {    
    foreach ($attachments as $attachment) {
        $image_id = get_attachment_link($attachment->ID);
        echo ',';
        $ids[] = $image_id; // Insert the ID into the array
    }
}

然后你可以在这个看起来需要采取数组的函数中使用它

get_jig(array('ids' => $ids));

如果get_jig不接受数组,但需要逗号分隔的字符串,则可以使用implode()从数组中创建字符串:

get_jig(array('ids' => implode(',',$ids)));

答案 1 :(得分:0)

你似乎想要一个像“1,2,3,4”这样的字符串。但是你创建一个带有“1”字符串的文件,然后用“2”覆盖这些文件,依此类推。

您想要替换

if ($attachments) {
    foreach ($attachments as $attachment) {
        $image_id = get_attachment_link($attachment->ID);
        echo ',';
    }
}

if ($attachments) {
    foreach ($attachments as $attachment) {
         $image_id .= (isset($image_id) ? ", " : $image_id = "") . get_attachment_link($attachment->ID);
    }
}

此粘贴显示所有工作.. http://viper-7.com/qZt7It