为了账号安全,请及时绑定邮箱和手机立即绑定

foreach() 只返回带有 json_decode() 的最后一项

foreach() 只返回带有 json_decode() 的最后一项

PHP
慕侠2389804 2021-11-05 20:07:34
尝试使用 foreach() 循环从解码的 JSON 中返回 Google Fonts系列,但我只得到最后一个系列,而不是全部。我一直在挣扎,谷歌搜索,尝试了我知道/发现的一切,没有结果!这是代码,我在 WordPress 中使用它。<?php/** * Get Google Fonts. */public function get_google_fonts() {    $google_api   = 'https://www.googleapis.com/webfonts/v1/webfonts?key=MY-API-KEY';    $font_content = wp_remote_get( $google_api, array( 'sslverify' => false ) );    $content      = json_decode( $font_content['body'], true );    $items = $content['items']; // I've tried (array) $content['items'];    // I've tried $i = 0;    // I've tried $families = array();    foreach ( $items as $key => $value ) {        $families = $value['family'];        BugFu::log( $families, false ); // Correct returning all families.        // I've tried $i++;    }    return array( $families ); // OR return $families; Returning last family.}非常感谢任何帮助。在此先感谢您的时间 :)
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

在您foreach每次输出$families.

但返回只返回最后一个$families


查看完整回答
反对 回复 2021-11-05
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

$families每次循环时都会覆盖变量:


$families = $value['family'];

为了向数组添加元素,您需要这样做:


$families[] = $value['family'];

这样,每次循环时,$value['family']都会将其添加到$families数组中。


编辑


$families在foreach循环之前将变量初始化为空数组可能也不错。因为如果您的 json 中没有任何值,该函数将返回null.


$families = [];

foreach ($items as $key => $value) { ... }


return $families;


查看完整回答
反对 回复 2021-11-05
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

这是因为当所有系列都已循环并且 $families 获得最后一个值时,您将在 foreachloop 之外返回字体,因此只返回最后一个值


查看完整回答
反对 回复 2021-11-05
  • 3 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信