2016-08-02 13 views
0

Hinzufügen habe ich vier Eingänge:ein Element in einem dynamischen Array

<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> 

kehre ich die Eingänge wie folgt aus:

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; 
    } 

Wo params die folgenden Parameter sind:

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); 
} 

Und das ist das Array, das ich zurückgebe:

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

Das Problem ist, dass mein Array jetzt nur Rank und Links In Count enthält. Ich muss auch einen Eintrag im Array für jede URL haben, die der Benutzer in diese Eingabe eingegeben hat. Die Methode, die ich verwende, um die URLs zurückzugeben, funktioniert, aber ich muss sie in nice_array Echo. Wie kann ich das machen? Es tut mir leid, wenn einige Dinge unklar sind, vertrau mir, dass sie mir auch unklar sind ... Ich bin ein Anfänger und ich weiß nicht, wie ich dieses Problem lösen soll. Meine Array-Struktur sieht wie folgt jetzt:

["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" 
     } 
    } 
    } 

Wenn es etwas unklar, fragen Sie mich und ich werde versuchen, es Ihnen zu erklären ... Es tut mir leid für diese zweideutige Frage, ich mein Bestes tue, um Dinge klar. Danke für deine Zeit und Hilfe. (Weitere Informationen hier: https://gist.github.com/michaelwowro/4130431)

Antwort

0

die $ params werden kann, ist leer in Zeile

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

Aber es sollte als Null in Array tho ', oder? – Alphonse

+0

hm am ende ihrer frage zeigen sie ein array - aber dieses array ist nicht $ nice_array –

1

Wenn ich Sie verstehen,

Wenn Sie Ihre HTML-Formular Code wie folgt ändern:

<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;"> 

Sie können Ihr Datenfeldformat erhalten, zum Beispiel:

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

Und wenn Sie eine etwas Variable und Schlüssel hinzufügen müssen;

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

Viel Glück.