循环 PHP file_get_contents 并执行放置请求

问题描述

我正在尝试遍历我使用 file_get_contents("someurl") 从 url 获取的 json。 我还将一个 ID 传递给我从解析的 webhook 中获取的那个 url。

问题来自 for/foreach,当它有多个 $data 时,我似乎无法循环遍历 'producto'

在循环继续之前,我必须将从 $stock$precio 通过 $stock_quantity$price 获取的数据发送到由 $sku 定义的产品 URL来自 $codigo_var

的 json

知道如何发送这些变量,无论我只得到一个 'producto' 还是多个 'producto'

$data = file_get_contents('PHP://input');
$products = json_decode($data,true);
$id = ($products['recurso_id']);
$dato = file_get_contents("www.something.com/$id");


$decodata = json_decode($dato,true);

foreach($decodata as $data){
        $sku = $data['producto']['codigo_var'];
        $stock_quantity= $data['producto']['stock'];
        $price = $data['producto']['precios'][0]['precio'];

        print_r($woocommerce->put('products/$sku',$stock_quantity));
        print_r($woocommerce->put('products/$sku',$price));
}

JSON 示例:

{"total":"3","offset":0,"limit":100,"repos":"https:\/\/www.apliton.com\/repos\/hogarytecno","productos":[{"id":"2438","estado":"1","fecha_alta":"2021-02-04 14:10:09","fecha_modif":"2021-04-19 10:42:58","codigo":"PE-BM110","codigo_var":"PE-BM110RS","nombre":"BATIDORA PEABODY DE MESA PE-BM110RS 1000 WATTS ROSA","tipo_id":"1","novedad":"0","detacado_pzdo_id":"0","web_mdp_destac":"1","web_mdp_bonif":"1","med_ancho":"41.00","med_alto":"30.50","med_largo":"37.50","peso_kg":"6.27","rubro_id":null,"rubro_nombre":"","rubro_subid":null,"marca_id":"7","marca_nombre":"PEABODY","iva_ptaje":"21.00","imp_int_ptaje":null,"club":"0","club_puntos_canje":"0","club_puntos_cred":"0","web_club_publica_canje":"0","stock":"23.00","envio_me":"1","envio_me_gratis":false,"envio_me_gratis_valor":"0","ml_link":"","colores":[],"tipo_medidas":{"id":null,"nombre":""},"medidas":{"id":null,"precios":[{"id":"3","nombre":"E-COMMERCE","tipo_moneda_id":"1","precio":"14859.5042","bonif":"0.00","precio_venc":"0.0000"}],"fotos":null},{"id":"2378","fecha_alta":"2021-01-09 09:30:40","fecha_modif":"2021-04-19 10:40:54","codigo_var":"PE-BM110L","nombre":"BATIDORA PEABODY DE MESA PE-BM110L 1000 WATTS MARFIL","stock":"333.00",{"id":"2377","fecha_alta":"2021-01-07 08:51:21","fecha_modif":"2021-04-19 10:40:56","codigo_var":"PE-BM110R","nombre":"BATIDORA PEABODY DE MESA PE-BM110 1000W ROJA","stock":"68.00","fotos":null}]}

解决方法

您可以使用:

<?php
$arr = json_decode($json,true); // turn json into an associative array

foreach($arr['productos'] as $producto) {
    $sku = $producto['codigo_var'];
    $stock_quantity= $producto['stock'];
    $price = $producto['precios'][0]['precio'];
    
    // ... etc.
}

您可以使用 print_r($arr)var_dump($arr) 来帮助您可视化数组结构,并引用您需要的数据项。

demo