2016-08-02 21 views
0

我有四個輸入:在動態陣列增加一個元素

<form id="query" method="POST"> 
<input type="text" name="mainUrl" style="width:350px; border-radius:3px;"> 
<input type="text" name="competitorUrl1" style="width:350px; border-radius:3px;"> 
<input type="text" name="competitorUrl2" style="width:350px; border-radius:3px;" > 
<input type="text" name="competitorUrl3" style="width:350px; border-radius:3px;"> 
</form> 

我返回這樣的輸入:

public function getAlexaAverageRankData($params){ 
     $return = []; 
     if (!empty($params["mainUrl"])){ 
      $return["mainUrl"] = $this->getAverageRank($params["mainUrl"]); 
     } 
     if (!empty($params["competitorUrl1"])){ 
      $return["competitorUrl1"] = $this->getAverageRank($params["competitorUrl1"]); 
     } 
     if (!empty($params["competitorUrl2"])){ 
      $return["competitorUrl2"] = $this->getAverageRank($params["competitorUrl2"]); 
     } 
     if (!empty($params["competitorUrl3"])){ 
      $return["competitorUrl3"] = $this->getAverageRank($params["competitorUrl3"]); 
     } 
     return $return; 
    } 

凡PARAMS是以下參數:

protected function buildQueryParams($site) { 
    $params = array(
     'Action'   => self::$ActionName, 
     'ResponseGroup'  => self::$ResponseGroupName, 
     'AWSAccessKeyId' => $this->accessKeyId, 
     'Timestamp'   => self::getTimestamp(), 
     'Count'    => self::$NumReturn, 
     'Start'    => self::$StartNum, 
     'SignatureVersion' => self::$SigVersion, 
     'SignatureMethod' => self::$HashAlgorithm, 
     'Url'    => $site 
    ); 
    ksort($params); 
    $keyvalue = array(); 
    foreach($params as $k => $v) { 
     $keyvalue[] = $k . '=' . rawurlencode($v); 
    } 
    return implode('&',$keyvalue); 
} 

這是我回來的數組:

$nice_array = array(
      'Rank'   => $info->TrafficData->Rank, 
      'Links In Count' => $info->ContentData->LinksInCount, 
      'Site'   => $info->getAlexaAverageRankData($params), 
     ); 
     return $nice_array; 

問題是我的數組現在只包含RankLinks In Count。 我還需要在數組中爲用戶輸入的每個網址添加一個條目。我用來返回網址的方法正在工作,但我需要將它們回顯到nice_array。我怎樣才能做到這一點? 如果有些事情不清楚,我很抱歉,相信我,他們對我也不清楚......我是初學者,我不知道如何解決這個問題。我的陣列結構看起來像現在這種權利:

["data"]=> 
    object(stdClass)#227 (2) { 
    ["mainUrl"]=> 
    object(stdClass)#233 (2) { 
     ["Rank"]=> 
     object(stdClass)#236 (1) { 
     ["0"]=> 
     string(8) "20231208" 
     } 
     ["Links In Count"]=> 
     object(stdClass)#235 (0) { 
     } 
    } 
    ["competitorUrl1"]=> 
    object(stdClass)#239 (2) { 
     ["Rank"]=> 
     object(stdClass)#240 (1) { 
     ["0"]=> 
     string(5) "24971" 
     } 
     ["Links In Count"]=> 
     object(stdClass)#241 (1) { 
     ["0"]=> 
     string(3) "640" 
     } 
    } 
    } 

如果有什麼不清楚的問我,我會盡量解釋給你聽......我這個模棱兩可的問題,對不起,我做我所能,讓事情很清楚。感謝您的時間和幫助。 (更多資訊:https://gist.github.com/michaelwowro/4130431

回答

0

可能是$ params爲符合空

'Site'   => $info->getAlexaAverageRankData($params), 
+0

但它應該顯示爲空數組tho',對不對? – Alphonse

+0

hm在你的問題結束時你顯示了一些數組 - 但這個數組不是'$ nice_array' –

1

如果我理解你,

如果你改變你的HTML表單代碼:

<input type="text" name="competitorUrl[1]" style="width:350px; border-radius:3px;"> 
<input type="text" name="competitorUrl[2]" style="width:350px; border-radius:3px;"> 
<input type="text" name="competitorUrl[3]" style="width:350px; border-radius:3px;"> 

你可以得到你的數據陣列格式,例如:

$competitorUrls = $request->get('competitorUrl'); 
foreach($competitorUrls as $url) 
{ 
    // Your codes for every url 
} 

而且當你需要添加一些變量和鍵時;

$competitorUrls["yourkey"] = "your value"; 

祝你好運。