久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      在PHP中處理JSON數(shù)組以及對象

      在 PHP 中處理 JSON 數(shù)組以及對象

      與客戶端混淆的常見原因是圍繞 JSON 數(shù)組和對象,以及如何在 PHP 中指定他們。特別是,問題是由空對象和數(shù)組對象引起的,此頁面將向您展示 Elasticsearch JSON API 中使用的一些常見模式,以及如何將其轉(zhuǎn)換為 PHP 的表現(xiàn)形式。

      空對象

      Elasticsearch API 在多個位置上使用空的 JSON 對象,這可能會給 PHP 帶來問題。與其他語言不同,PHP 沒有空對象的「簡短」表現(xiàn)形式。因此許多開發(fā)人員不知道如何指定空對象。

      考慮在查詢中添加突出顯示:

      {     "query" : {         "match" : {             "content" : "quick brown fox"         }     },     "highlight" : {         "fields" : {             "content" : {} (1)         }     } }

      1.這個空的 JSON 對象是導(dǎo)致問題的原因。

      問題是 PHP 會自動轉(zhuǎn)換 "content" : {} 成 "content" : [],這樣將不再是有效的 Elasticsearch DSL。我們需要告訴 PHP 空對象是一個顯示對象,而不是數(shù)組 。 在 PHP 中 定義此查詢, 您可以:

      $params['body'] = array(     'query' => array(         'match' => array(             'content' => 'quick brown fox'         )     ),     'highlight' => array(         'fields' => array(             'content' => new stdClass() (1)         )     ) ); $results = $client->search($params);

      我們使用通用的 PHP stdClass 對象來表示一個空對象,JSON 將會被正確解碼。

      通過使用顯示的 stdClass 對象,我們可以強(qiáng)制使用 json_encode 解析器正確的輸出空對象,而不是空數(shù)組。 遺憾的是,這個冗長的解決方案,是在 PHP 中實現(xiàn)目標(biāo)的唯一方法…… 并沒有空對象的「簡短」版本。

      對象數(shù)組

      Elasticsearch DSL 中的另一種常見模式是對象數(shù)組。例如,考慮為查詢添加排序:

      {     "query" : {         "match" : { "content" : "quick brown fox" }     },     "sort" : [  (1)         {"time" : {"order" : "desc"}},         {"popularity" : {"order" : "desc"}}     ] }

      1.「sort」包含一組 JSON 對象

      這種安排很常見,但是 PHP 的結(jié)構(gòu)可能很復(fù)雜。 因為他需要嵌套數(shù)組。PHP 的冗長往往會掩蓋實際發(fā)生的事。要構(gòu)造一個對象數(shù)組,實際上需要一個數(shù)組數(shù)組 :

      $params['body'] = array(     'query' => array(         'match' => array(             'content' => 'quick brown fox'         )     ),     'sort' => array(    (1)         array('time' => array('order' => 'desc')),  (2)         array('popularity' => array('order' => 'desc')) (3)     ) ); $results = $client->search($params);

      1.該數(shù)組對 "sort" : [] 數(shù)組進(jìn)行編碼

      2.該數(shù)組對 {"time" : {"order" : "desc"}} 對象進(jìn)行編碼

      3.該數(shù)組對 {"popularity" : {"order" : "desc"}} 對象進(jìn)行編碼

      如果您使用 5.4+ 以上的版本,我強(qiáng)烈建議你使用短數(shù)組語法。它使這些嵌套數(shù)組更容易閱讀:

      $params['body'] = [     'query' => [         'match' => [             'content' => 'quick brown fox'         ]     ],     'sort' => [         ['time' => ['order' => 'desc']],         ['popularity' => ['order' => 'desc']]     ] ]; $results = $client->search($params);

      空對象數(shù)組

      有時, 您會遇到前面兩種模式的 DSL . 這個得分函數(shù)的查詢是一個很好的例子,有時他需要一個空的對象數(shù)組,其中一些對象可能是空的 JSON 對象。

      例如這種查詢:

      {    "query":{       "function_score":{          "functions":[             {                "random_score":{}             }          ],          "boost_mode":"replace"       }    } }

      我們可以使用以下 PHP 代碼構(gòu)建它:

      $params['body'] = array(     'query' => array(         'function_score' => array(             'functions' => array(  (1)                 array(  (2)                     'random_score' => new stdClass() (3)                 )             )         )     ) ); $results = $client->search($params);

      1.它對對象數(shù)組進(jìn)行編碼: "functions" : []

      2.它對數(shù)組中的對象進(jìn)行編碼: { "random_score": {} }

      3.T 它對空的 JSON 對象進(jìn)行編碼: "random_score": {}

      推薦:【PHP教程】

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號