用键破坏关联数组的最快方法

时间:2009-01-02 21:06:18

标签: php arrays query-string associative-array implode

我正在寻找一种将关联数组转换为字符串的快速方法。典型的结构类似于URL查询字符串,但具有可自定义的分隔符,因此我可以将“&”用于xhtml链接,否则使用“&”。

我的第一个倾向是使用foreach,但由于我的方法可以在一个请求中多次调用,我担心它可能太慢。

<?php
$Amp = $IsXhtml ? '&amp;' : '&';
$Parameters = array('Action' => 'ShowList', 'Page' => '2');
$QueryString = '';
foreach ($Parameters as $Key => $Value)
        $QueryString .= $Amp . $Key . '=' . $Value;

有更快的方法吗?

11 个答案:

答案 0 :(得分:162)

您可以使用http_build_query()来执行此操作。

  

从提供的关联(或索引)数组生成URL编码的查询字符串。

答案 1 :(得分:32)

顺便说一句,我一直在寻找破坏关联数组的最佳方法,但是使用我自己的分隔符......

所以我使用PHP的array_walk()函数执行此操作,以便将关联数组连接到可以应用于HTML标记的参数列表中....

// Create Params Array
$p = Array("id"=>"blar","class"=>"myclass","onclick"=>"myJavascriptFunc()");

// Join Params
array_walk($p, create_function('&$i,$k','$i=" $k=\"$i\"";'));
$p_string = implode($p,"");

// Now use $p_string for your html tag

显然,您可以在某种程度上将它粘贴在您自己的函数中,但它可以让您了解如何使用自己的方法连接关联数组。 希望能帮助某人:)

答案 2 :(得分:28)

如果您不关心完全格式,但是您确实想要一些简单但没有print_r换行符的内容,您还可以快速使用json_encode($value)简单格式化输出。 (注意它也适用于其他数据类型

$str = json_encode($arr);
//output...
[{"id":"123","name":"Ice"},{"id":"234","name":"Cake"},{"id":"345","name":"Pie"}]

答案 3 :(得分:19)

这是我的解决方案,例如div数据属性:

sort

答案 4 :(得分:17)

一种方法是使用print_r(array, true),它将返回数组的字符串表示

答案 5 :(得分:1)

用于从简单数组创建HTML属性字符串(带引号)的单行程序:

$attrString = str_replace("+", " ", str_replace("&", "\" ", str_replace("=", "=\"", http_build_query($attrArray)))) . "\"";

实施例

$attrArray = array("id"    => "email", 
                   "name"  => "email",
                   "type"  => "email",
                   "class" => "active large");

echo str_replace("+", " ", str_replace("&", "\" ", str_replace("=", "=\"", http_build_query($attrArray)))) . "\"";

// Output:
// id="email" name="email" type="email" class="active large"

答案 6 :(得分:0)

=SORT('Datakk (Responce11)'!A2:J,1,0)

答案 7 :(得分:0)

使用array_walk

,这更短,更透明,更直观
Cells()

答案 8 :(得分:0)

我的解决方案:

mutate

答案 9 :(得分:-2)

这是我能想到的最基本的版本:

public function implode_key($glue = "", $pieces = array())
{
    $keys = array_keys($pieces);
    return implode($glue, $keys);
}

答案 10 :(得分:-3)

echo implode(",", array_keys($companies->toArray()));

$companies->toArray() - 如果你的$variable是一个对象,那么就是这种情况,否则只需通过$ companies。

那就是它!