如何仅显示此JSON数组中的第一个图像?

时间:2017-07-09 16:35:33

标签: php arrays json wordpress api

好的,我正在尝试将列出可采用宠物的API集成到wordpress网站中。我已经完成了很多谷歌搜索和阅读教程,到目前为止,我已经设法组建了一个超级基本的插件,似乎做了我想要完成的事情。目前,我试图提取图像,但只是第一张图片。每只动物可能有5个与之相关的图像,但我只想拉入第一个(默认)。目前我的代码带来了所有。现在我意识到问题在于我正在使用" foreach()"。但是,这对我来说是新的,我的谷歌搜索不顺利,而我试图做的任何其他方式都没有给我任何图片。任何建议都表示赞赏....如果我做错了什么,请随时告诉我:)我还需要弄清楚如何对它进行分页,但我还是在想这个问题。'一个单独的问题!谢谢!



<?php
add_shortcode('pets', 'petsshortcode');
function petsshortcode() {
$request = wp_remote_get( 'https://petstablished.com/api/v2/public/pets?public_key=UlEK4EWvDAoOjXeQXSCQZAyBywWfqfOg&search[status]=available,foster&pagination[limit]=20&pagination[page]=1' );

if( is_wp_error( $request ) ) {
	return false; // Bail early
}
$body = wp_remote_retrieve_body( $request );

$data = json_decode( $body );

if( ! empty( $data ) ) {
	
	foreach( $data->collection as $collection ) {
		echo '<div id="pet-block"><ul class="pet-profile"><li class="pet-name">'. $collection->name;	echo '</li>';
		echo '<li class="pet-meta">'.'<span class="sex">' . $collection->sex; echo '</span>' . '<span class="breed">' . $collection->breed; echo '</span><span class="age">' . $collection->age; echo '</span></li>';
		echo '<li><p>' . $collection->description; echo '</li></p>';		
	foreach( $collection->images as $images ) {
		echo '<div class="pet-photo"><img src="' . $images->image->url; echo '" width="200"></div>';}
		echo '</ul></div>'; 
	}
}
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

在这种情况下,您不需要嵌套的foreach循环,只需使用一个foreach循环:

// your code
foreach( $data->collection as $collection ) {
    echo '<div id="pet-block"><ul class="pet-profile"><li class="pet-name">'. $collection->name;    echo '</li>';
    echo '<li class="pet-meta">'.'<span class="sex">' . $collection->sex; echo '</span>' . '<span class="breed">' . $collection->breed; echo '</span><span class="age">' . $collection->age; echo '</span></li>';
    echo '<li><p>' . $collection->description; echo '</li></p>';        
    echo '<div class="pet-photo"><img src="' . $collection->images[0]->image->url; echo '" width="200"></div>';
    echo '</ul></div>'; 
}
// your code