skip to Main Content

Hello I am working with Bing web search API and need some help with translating JSON into html using PHP. So I wabt to be able to print selective staff using foreach() and if() statements. I have looked uo on other entris but I cannot figure out what thw problem is.

Here is an JSON example:

{
"_type": "SearchResponse",
"queryContext": {
    "originalQuery": "Microsoft Cognitive Services"
},
"webPages": {
    "webSearchUrl": "https://www.bing.com/search?q=Microsoft+Cognitive+Services",
    "totalEstimatedMatches": 2320000,
    "value": [
        {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0",
            "name": "Cognitive Services | Microsoft Azure",
            "url": "https://azure.microsoft.com/es-es/services/cognitive-services/",
            "displayUrl": "https://azure.microsoft.com/es-es/services/cognitive-services",
            "snippet": "Agregue funcionalidades de visiu00f3n, voz, lenguaje y conocimiento a sus aplicaciones mediante las API de inteligencia artificial de Cognitive Services.",
            "dateLastCrawled": "2017-11-22T05:45:00.0000000Z"
        },
        {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.1",
            "name": "Microsoft Cognitive Services: Componentes del Servicio ...",
            "url": "https://azure.microsoft.com/es-es/support/legal/cognitive-services-components/",
            "displayUrl": "https://azure.microsoft.com/es-es/support/legal/cognitive-services...",
            "snippet": "Revise el uso de los tu00e9rminos de Microsoft Cognitive Services: Componentes del Servicio.",
            "dateLastCrawled": "2017-11-21T02:34:00.0000000Z"
        },
        {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.2",
            "name": "Microsoft Trust Center | Microsoft Cognitive Services",
            "url": "https://www.microsoft.com/en-us/trustcenter/cloudservices/cognitiveservices",
            "displayUrl": "https://www.microsoft.com/.../cloudservices/cognitiveservices",
            "snippet": "Microsoft Cognitive Services is a collection of intelligent APIs that allow systems to understand and interpret peopleu2019s needs by using natural methods ...",
            "dateLastCrawled": "2017-11-18T16:46:00.0000000Z"
        },
        {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.3",
            "name": "Cognitive Services | Microsoft Azure",
            "url": "https://azure.microsoft.com/en-us/services/cognitive-services/",
            "displayUrl": "https://azure.microsoft.com/en-us/services/cognitive-services",
            "snippet": "Add vision, speech, language and knowledge capabilities to your apps with artificial intelligence APIs from Cognitive Services. Explore our APIs today.",
            "dateLastCrawled": "2017-11-22T02:20:00.0000000Z"
        },
        {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.4",
            "name": "Cognitive Service Try experience | Microsoft Azure",
            "url": "https://azure.microsoft.com/en-us/try/cognitive-services/",
            "displayUrl": "https://azure.microsoft.com/en-us/try/cognitive-services",
            "snippet": "Microsoft Cognitive Services Try experience lets you build apps with powerful algorithms using just a few lines of code through a 30 day trial.",
            "dateLastCrawled": "2017-11-21T02:42:00.0000000Z"
        },
        {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.5",
            "name": "Cognitive Services Directory | Microsoft Azure",
            "url": "https://azure.microsoft.com/en-us/services/cognitive-services/directory/",
            "displayUrl": "https://azure.microsoft.com/.../services/cognitive-services/directory",
            "snippet": "Learn more about Cognitive Services and manage them in the Azure cloud, or test them with temporary access.",
            "dateLastCrawled": "2017-11-21T21:14:00.0000000Z"
        },
        {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.6",
            "name": "What is Microsoft Cognitive Services? | Microsoft Docs",
            "url": "https://learn.microsoft.com/en-us/azure/cognitive-services/Welcome",
            "displayUrl": "https://learn.microsoft.com/en-us/azure/cognitive-services/Welcome",
            "snippet": "Microsoft Cognitive Services is a set of APIs, SDKs, and services that you can use with Microsoft Azure that make applications more intelligent, engaging ...",
            "dateLastCrawled": "2017-11-21T17:40:00.0000000Z",
            "searchTags": [
                {
                    "name": "search.ms_sitename",
                    "content": ""Docs"; docs"
                },
                {
                    "name": "search.ms_docsetname",
                    "content": ""azure-documents"; azure; documents"
                },
                {
                    "name": "search.ms_product",
                    "content": ""Azure"; azure"
                }
            ]
        },
        {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.7",
            "name": "Microsoft Cognitive Services",
            "url": "https://westus.dev.cognitive.microsoft.com/docs/services/TextAnalytics.V2.0/operations/56f30ceeeda5650db055a3c7",
            "displayUrl": "https://westus.dev.cognitive.microsoft.com/docs/services/Text...",
            "snippet": "Text Analytics API. The Text Analytics API is a suite of text analytics web services built with best-in-class Microsoft machine learning algorithms.",
            "dateLastCrawled": "2017-11-22T13:25:00.0000000Z"
        }
    ]
}

I would like to print some stuff inside “webPages”, I am using the following php code:

$links = json_decode($json, TRUE);

foreach ($links['webPages'] as $j => $v) {
    if($j=="value"){
        foreach ($v as $k => $w) {
            print $k . ": " . $w;
        }
    }

}

I am getting the following error:

Notice: Array to string conversion

And it prints:

0: Array
1: Array
...
7: Array

Thanks beforehand.

2

Answers


  1. Use vardump instad ofprint

    var_dump — This function displays structured information about one or more expressions that includes its type and value

    I personally prefer using print_r

    print_r — Prints human-readable information about a variable

    Login or Signup to reply.
  2. Do you intend this??

            $json  = '{
            "_type": "SearchResponse",
            "queryContext": {
                "originalQuery": "Microsoft Cognitive Services"
            },
            "webPages": {
                "webSearchUrl": "https://www.bing.com/search?q=Microsoft+Cognitive+Services",
                "totalEstimatedMatches": 2320000,
                "value": [
                    {
                        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0",
                        "name": "Cognitive Services | Microsoft Azure",
                        "url": "https://azure.microsoft.com/es-es/services/cognitive-services/",
                        "displayUrl": "https://azure.microsoft.com/es-es/services/cognitive-services",
                        "snippet": "Agregue funcionalidades de visiu00f3n, voz, lenguaje y conocimiento a sus aplicaciones mediante las API de inteligencia artificial de Cognitive Services.",
                        "dateLastCrawled": "2017-11-22T05:45:00.0000000Z"
                    },
                    {
                        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.1",
                        "name": "Microsoft Cognitive Services: Componentes del Servicio ...",
                        "url": "https://azure.microsoft.com/es-es/support/legal/cognitive-services-components/",
                        "displayUrl": "https://azure.microsoft.com/es-es/support/legal/cognitive-services...",
                        "snippet": "Revise el uso de los tu00e9rminos de Microsoft Cognitive Services: Componentes del Servicio.",
                        "dateLastCrawled": "2017-11-21T02:34:00.0000000Z"
                    },
                    {
                        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.2",
                        "name": "Microsoft Trust Center | Microsoft Cognitive Services",
                        "url": "https://www.microsoft.com/en-us/trustcenter/cloudservices/cognitiveservices",
                        "displayUrl": "https://www.microsoft.com/.../cloudservices/cognitiveservices",
                        "snippet": "Microsoft Cognitive Services is a collection of intelligent APIs that allow systems to understand and interpret peopleu2019s needs by using natural methods ...",
                        "dateLastCrawled": "2017-11-18T16:46:00.0000000Z"
                    },
                    {
                        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.3",
                        "name": "Cognitive Services | Microsoft Azure",
                        "url": "https://azure.microsoft.com/en-us/services/cognitive-services/",
                        "displayUrl": "https://azure.microsoft.com/en-us/services/cognitive-services",
                        "snippet": "Add vision, speech, language and knowledge capabilities to your apps with artificial intelligence APIs from Cognitive Services. Explore our APIs today.",
                        "dateLastCrawled": "2017-11-22T02:20:00.0000000Z"
                    },
                    {
                        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.4",
                        "name": "Cognitive Service Try experience | Microsoft Azure",
                        "url": "https://azure.microsoft.com/en-us/try/cognitive-services/",
                        "displayUrl": "https://azure.microsoft.com/en-us/try/cognitive-services",
                        "snippet": "Microsoft Cognitive Services Try experience lets you build apps with powerful algorithms using just a few lines of code through a 30 day trial.",
                        "dateLastCrawled": "2017-11-21T02:42:00.0000000Z"
                    },
                    {
                        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.5",
                        "name": "Cognitive Services Directory | Microsoft Azure",
                        "url": "https://azure.microsoft.com/en-us/services/cognitive-services/directory/",
                        "displayUrl": "https://azure.microsoft.com/.../services/cognitive-services/directory",
                        "snippet": "Learn more about Cognitive Services and manage them in the Azure cloud, or test them with temporary access.",
                        "dateLastCrawled": "2017-11-21T21:14:00.0000000Z"
                    },
                    {
                        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.6",
                        "name": "What is Microsoft Cognitive Services? | Microsoft Docs",
                        "url": "https://learn.microsoft.com/en-us/azure/cognitive-services/Welcome",
                        "displayUrl": "https://learn.microsoft.com/en-us/azure/cognitive-services/Welcome",
                        "snippet": "Microsoft Cognitive Services is a set of APIs, SDKs, and services that you can use with Microsoft Azure that make applications more intelligent, engaging ...",
                        "dateLastCrawled": "2017-11-21T17:40:00.0000000Z",
                        "searchTags": [
                            {
                                "name": "search.ms_sitename",
                                "content": ""Docs"; docs"
                            },
                            {
                                "name": "search.ms_docsetname",
                                "content": ""azure-documents"; azure; documents"
                            },
                            {
                                "name": "search.ms_product",
                                "content": ""Azure"; azure"
                            }
                        ]
                    },
                    {
                        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.7",
                        "name": "Microsoft Cognitive Services",
                        "url": "https://westus.dev.cognitive.microsoft.com/docs/services/TextAnalytics.V2.0/operations/56f30ceeeda5650db055a3c7",
                        "displayUrl": "https://westus.dev.cognitive.microsoft.com/docs/services/Text...",
                        "snippet": "Text Analytics API. The Text Analytics API is a suite of text analytics web services built with best-in-class Microsoft machine learning algorithms.",
                        "dateLastCrawled": "2017-11-22T13:25:00.0000000Z"
                    }
                ]
            }}';
    
            $links = json_decode($json);
            $links = objectToArray($links);
    
            foreach ($links as $j=>$v) {
                //print $j.'<br>';
                if($j == "webPages"){
                    foreach ($v as $k) {
                        if (is_array($k)){
                            foreach ($k as $i=>$t){
                                if (is_array($t)){
                                    foreach ($t as $l=>$m){
                                        print "<b> $l </b>" .' : ' .$m.'<br>';
                                    }   
                                }
                            }
                        }
                    }
                }
            }
    
    function objectToArray($stdClass) {
    
    if (is_object($stdClass)) {
        //recupera le proprietà dell'oggetto
        $stdClass = get_object_vars($stdClass);
    }
    if (is_array($stdClass)) {
        //ritorna l'array convertito in oggetto per chiamata ricorsiva
        return array_map(__FUNCTION__, $stdClass);
    }
    else {
        //ritorna l'array
        return $stdClass;
    }
    }
    

    Also in this way there a foreach in less 🙂

            $links = json_decode($json);
            $links = objectToArray($links);
            foreach ($links['webPages'] as $j => $v) {
                if(is_array($v)){
                    foreach ($v as $k => $w) {
                        if (is_array($w)){
                            foreach($w as $t=>$l){
                                print '<b>'.$t."</b> : ".$l.'<br>';
                            }       
                        }
                    }
                }
            }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search