PHP函数获取数组中最后插入的数据

时间:2012-05-03 13:41:35

标签: php function

我知道你们会说这可能会复制到PHP get index of last inserted item in array

但是我已经尝试过但没有成功让我的功能发挥作用,而我正试图找出原因。

我有一个功能,可以从Wordpress帖子的内容中获取缩略图附件。

代码工作正常,只有一个图像的帖子,但如果帖子中有多个图像,它将正确显示array的第一个图像,但我不知道为什么反过来存储图像。这意味着最后存储的帖子的第一个图像和最后一个存储的图像。我想这可能是Wordpress的media功能如何工作。

无论如何,我只需要从函数中获取最后插入的数据,即使它在array

中存储了一个或多个图像
// Get Image Attachments
function sa_get_image($postid=0, $size='thumbnail') { 
    if ($postid<1)
    $postid = get_the_ID();
    $thumb = get_post_meta($postid, "thumb", TRUE); 
    if ($thumb != null or $thumb != '') {
        echo $thumb;
    }
    elseif ($images = get_children(array( 
        'post_parent' => $postid,
        'post_type' => 'attachment',
        'numberposts' => '1',
        'post_mime_type' => 'image', )))
        foreach($images as $image) {
            $thumbnail=wp_get_attachment_image_src($image->ID, $size);
            ?>
    <?php echo $thumbnail[0]; ?> // here is the problem where the image display.
    <?php }

}

3 个答案:

答案 0 :(得分:2)

变化:
$thumbnail=wp_get_attachment_image_src($image->ID, $size);
于:
$thumbnail[] = wp_get_attachment_image_src($image->ID, $size);

不要忘记在for-each之外声明$thumbnail = array()

然后你可以使用(首选):

echo end($thumbnail);

或类似的东西:

echo $thumbnail[count($thumbnail)-1];

如果你不想得到'最后'的附加值。
或者,您可以使用[0]first()获取第一个值


你可以在这里添加(例如):

$thumb = get_post_meta($postid, "thumb", TRUE); 
$thumbnail = array(); //<<<
if ($thumb != null or $thumb != '') {

答案 1 :(得分:1)

您正在访问$ thumbnail作为数组但是您正在覆盖foreach()中的变量,就像它是一个字符串一样。

变化:

$thumbnail=wp_get_attachment_image_src($image->ID, $size);

 $thumbnail[]=wp_get_attachment_image_src($image->ID, $size); 

使它成为一个数组,然后你的代码的其余部分应该工作

AH

答案 2 :(得分:0)

我的解决方案有一个更简单的方法,这就是我们如何从阵列中获取最后一个。

只需将其添加到数组区域即可。

'orderby' => 'menu_order',
'order' => 'ASC', //If reverse use DESC