Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WooCommerce:获取多维数组中与ACF自定义字段匹配的Json数据_Php_Json_Wordpress_Woocommerce_Advanced Custom Fields - Fatal编程技术网

Php WooCommerce:获取多维数组中与ACF自定义字段匹配的Json数据

Php WooCommerce:获取多维数组中与ACF自定义字段匹配的Json数据,php,json,wordpress,woocommerce,advanced-custom-fields,Php,Json,Wordpress,Woocommerce,Advanced Custom Fields,我试图从这个json文件中获取数据,但我需要与我设置的高级自定义字段匹配的数据 $str = file_get_contents('http://gold.explorethatstore.com/wp-content/themes/divi-ETS-child-theme/run_results_bgasc.json'); // decode JSON $json = json_decode($str, true); // default value $coinPrice = "N

我试图从这个json文件中获取数据,但我需要与我设置的高级自定义字段匹配的数据

    $str = file_get_contents('http://gold.explorethatstore.com/wp-content/themes/divi-ETS-child-theme/run_results_bgasc.json');

// decode JSON
$json = json_decode($str, true);

// default value
$coinPrice = "Not Available";
$vendorName = get_field('bgasc_vendor_name');
// loop the json array
foreach($json['coin'] as $value){
        // check the condition
        if($value['coin_name'] == $vendorName){
                $coinPrice = $value['url']; // get the price
                break; // exit the loop
        }
}

echo $coinPrice;

下面是处理这两种数组情况(有或没有“权重”数组)的正确代码:


此代码经过测试并正常工作

有一个问题,例如,类别名称“黄金美洲鹰”有一个“重量”数组,但“黄金美洲水牛”没有重量数组(少1个多级数组)…因此这是一个问题。所有类别名称都应该具有相同的结构…嗯,这就是它在站点上的爬网方式,一些结果将返回,而一些类别将没有任何结果。PHP无法通过名称识别数组?我很抱歉!这是:谢谢你,做得很好。如果“array\u key\u存在”,我知道你做了什么。非常感谢你的帮助。你今天为我解决了很多问题。
$str = file_get_contents('http://gold.explorethatstore.com/wp-content/themes/divi-ETS-child-theme/run_results_bgasc_gold.json');

// Set te Data in a multi-dimensional array
$json = json_decode($str, true);

// Default variable values
$coin_price = "Not Available";
$url = '';
$break = false;

// Get the vendor name (like the "coin_name" value)
$vendorName = get_field('bgasc_vendor_name');


// Go through multi-dimensional array with multiple loops
foreach ($json['categories'] as $category){
    // Case with "weight" additional array
    if( array_key_exists ( 'weight' , $category ) ){ 
        foreach ($category['weight'] as $weight){
            foreach ($weight['coin'] as $coin){
                // check the condition
                if($coin['coin_name'] == $vendor_name ){
                    $coin_price = $coin['price']; // get the price
                    $url = $coin['url']; // get the url
                    $break = true; // (exit other loops)
                    break; // exit the loop
                }
            }
            if($break) break; // exit the loop
        }
        if($break) break; // exit the loop
    } else { // Case without "weight" additional array
        foreach ($category['coin'] as $coin){
            // check the condition
            if($coin['coin_name'] == $vendor_name ){
                $coin_price = $coin['price']; // get the price
                $url = $coin['url']; // Get the url
                $break = true; // (exit other loops)
                break; // exit the loop
            }
        }
        if($break) break; // exit the loop
    }
}

// output price
echo $coin_price;

// output URL
echo $url;