在动态数组中添加元素

时间:2016-08-02 20:56:37

标签: php arrays api laravel

我有四个输入:

<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。 我还需要在数组中为用户放入该输入的每个url创建一个条目。我用来返回网址的方法正在运行,但我需要将它们回显到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

2 个答案:

答案 0 :(得分: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";
祝你好运。

答案 1 :(得分:0)

可能是$ params在行中是空的

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