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


PHP function get the last inserted data in the array

我知道你们会说这可能与 PHP 重复 获取数组中最后插入项目的索引

但是我已经尝试过并且没有成功让我的功能工作,我试图弄清楚为什么。

我有一个功能,可以从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 }
}

更改:

$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 != '') {

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

改变:

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

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

要使其成为数组,那么其余代码应该可以工作

我的解决方案有一种更简单的方法,这是我们从数组中获取最后一个的方法。

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

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