【问题标题】:PHP: Return only one property from object [duplicate]PHP:从对象中只返回一个属性[重复]
【发布时间】:2019-10-08 14:23:39
【问题描述】:

我在 Woocommerce 网站上有这段代码,它成功返回了整个响应对象:

function checkProducts($data) {
    $product_ID = $data['id'];
    $api_response = wp_remote_post( 'https://whatever.net/wc-api/v3/products/'.$product_ID, array(
        'method'    => 'GET',
        'headers' => array(
        'Authorization' => 'Basic ' . base64_encode( 'key:secret' )
        )
    ) );

    $body = json_decode( $api_response['body'] );

    if( wp_remote_retrieve_response_message( $api_response ) === 'OK' ) {
        return $body;
    }
}

我试图以多种方式仅返回 stock_quantity 属性,该属性存在于对象上,但没有成功,等等:

$body = json_decode( $api_response['body']['stock_quantity'] );
return $body['stock_quantity']:
return $body.stock_quantity;

JSON 返回:

{
product: {
id: 687,
created_at: "2019-10-08T10:21:57Z",
updated_at: "2019-10-08T13:53:32Z",
type: "simple",
status: "publish",
downloadable: false,
virtual: false,
permalink: "https://germanalvarez.net/develop/ww/producto/tww-fin-de-semana-del-3-al-4/",
sku: "",
price: "200",
stock_quantity: "200",
sale_price: "120",
...

我该如何存档?谢谢

【问题讨论】:

  • var_dump($body); 给你什么?听起来$body->stock_quantity 应该可以工作,但如果没有看到数据结构就无法判断
  • 另外,有哪些方法,它是否会产生错误/通知?
  • 您是否跳过了@BrettGregson 的评论?
  • 我刚刚添加了您的信息,我正在寻找@BrettGregson 的回复,请稍等一下吗?谢谢。
  • @BrettGregson,尝试了您的示例但没有成功,只返回 null。我遇到了 var_dump() 的问题,因为我看不到它的结果,我对此很陌生,抱歉。我已编辑添加返回到前面的最终 JSON

标签: php wordpress object


【解决方案1】:

首先——json_decode 默认会返回一个对象: https://www.php.net/manual/en/function.json-decode.php

请尝试以下操作:

$body = json_decode( $api_response['body'] );
$stock_quantity = $body->product->stock_quantity;
return $stock_quantity;


但是,如果您想对数组进行操作,可以使用以下方法(注意json_decode 中的第二个参数):

$body = json_decode( $api_response['body'], true );
$stock_quantity = $body['product']['stock_quantity'];
return $stock_quantity;

【讨论】:

  • 谢谢。恐怕这与返回的结构不匹配。你能检查我的问题编辑吗?在那里你会看到 JSON
  • 我已经更新了我的答案!
  • 谢谢Lukasz,解决了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
相关资源
最近更新 更多