从file_get_contents转换为wp_remote_get

时间:2017-09-05 00:53:44

标签: php json wordpress

我在将此函数从file_get_contents转换为wp_remote_get时遇到了一些麻烦,我希望能够提供一些见解。这似乎我很亲密。下面是两种情况,我的原始使用file_get_contents,第二种使用wp_remote_get但不起作用。任何人都可以帮我弄清楚我搞砸了什么吗?

    case 'one':
        $url = "https://api.bitfinex.com/v1/pubticker/btcusd";
        $json = json_decode(file_get_contents($url), true);
        $price = $json["last_price"];
        return $price;
        break;
    case 'two':
        $request = wp_remote_get( 'https://api.bitfinex.com/v1/pubticker/btcusd' );
    if( is_wp_error( $request ) ) {
        return false;
    }
        $body = wp_remote_retrieve_body( $request );
        $data = json_decode( $body );
        if( ! empty( $data ) ) {

            foreach( $data['last_price'] as $price ) {
                return $price;
            }
        }
        break;

2 个答案:

答案 0 :(得分:1)

当我查看解码的json时,如果foreach( $data['last_price'] as $price ) { return $price; } 看起来不是数组。所以也许你想要的是:

此:

return $data['last_price'];

可能只是:

import { NgModule, ErrorHandler } from '@angular/core';
import { IonicErrorHandler } from 'ionic-angular';

@NgModule({
  providers: [{ provide: ErrorHandler, useClass: IonicErrorHandler }]
})
class AppModule {}

因为返回的json对象只是一个看起来像财务数据的数组。这也是你在第一个例子中的表现。

答案 1 :(得分:-1)

您的print_r( $data )会提供您的“stdClass对象”,但您正在使用

print_r( $data['last_price'] );

它什么都没给你。 所以为了获得对象尝试

$test=$data->last_price;
print_r($test);

希望这会对你有所帮助。