在php中我有以下数组:
$car[] = array ("id"=>"1", "brand"=>"Audi", "price"=>"7000");
$car[] = array ("id"=>"9", "brand"=>"Merc", "price"=>"9000");
使用此数组,我想构建以下查询字符串:
&brand0=Audi&brand1=Merc&id0=1&id1=9&price0=7000&price0=9000
我该怎么做呢?
请注意,数组可能比2行有更多的结果,因此构建的查询字符串应该能够处理它(此示例中使用的结果也可能不同)。
由于
答案 0 :(得分:3)
作为替代方案,您可以使用http_build_query
。为了进一步简化,我建议:
$url = http_build_query(array("car" => $car));
这将导致这样的URL参数列表:
&car[0][brand]=Audi&car[1][brand]=Merc&car[0][id]=1&car[1][id]=9&car[0][price]=7000&car[1][price]=9000
这看起来很奇怪,但允许PHP按原样重建两个数组。
答案 1 :(得分:2)
循环遍历数组,并将键值对放在另一个数组中。然后最终内爆数组。类似的东西:
$data = array();
$i = 0;
foreach ($car as $k=>$v)
{
$data[] = $k . '_' . $i .'=' . $v;
$i++;
}
echo implode('&', $data);
我经常使用内爆,因为AFAIK比$data +=
快。
修改强>
实际上,上面的那个仅适用于1个阵列。这是多个数组:
$data = array();
$i = 0;
foreach ($car as $c)
{
foreach ($c as $k=>$v);
data[] = $k . '_' . $i . '=' . $v;
$i++;
}
echo implode ('&', $data);
答案 2 :(得分:0)
也许不是最优雅的方式。
$str = "";
foreach($car as $key => $val){
$str .= "$key=$val&";
}
$str = substr($str, 0, strlen($str) - 2);
答案 3 :(得分:0)
$params = array();
for($i=0;$i<count($car);$i++) {
$params[] = 'id' . $i . '=' . $car[$i]['id'];
$params[] = 'brand' . $i . '=' . $car[$i]['brand'];
$params[] = 'price' . $i . '=' . $car[$i]['price'];
}
$string = implode('&', $params);
这将通过,并创建带有数字的键,然后将它们全部粘在一起,为您提供您想要的$string
。它也将只是为了清洁,没有额外的&amp;如果您只是追加,可能会在开始或结束时获得。