127

連想配列を文字列に変換する高速な方法を探しています。一般的な構造はURLクエリ文字列のようなものですが、区切り文字をカスタマイズできるため&、xhtmlリンクには''を使用でき、それ以外の場合は''を使用できます&

私の最初の傾向は使用することforeachですが、私のメソッドは1つのリクエストで何度も呼び出される可能性があるため、遅すぎるのではないかと心配しています。

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

より速い方法はありますか?

4

12 に答える 12

187

あなたはそれをするために使うことができますhttp_build_query()

提供された連想(またはインデックス付き)配列からURLエンコードされたクエリ文字列を生成します。

于 2009-01-02T21:09:06.777 に答える
39

正確な書式設定に関心がない場合は、単純なものが必要ですが、改行なしで、すばやく簡単に書式設定された出力をprint_r使用することもできます。json_encode($value)他のデータ型でもうまく機能することに注意してください

$str = json_encode($arr);
//output...
[{"id":"123","name":"Ice"},{"id":"234","name":"Cake"},{"id":"345","name":"Pie"}]
于 2014-10-12T03:12:17.033 に答える
34

余談ですが、連想配列を内破する最良の方法を探していましたが、独自のセパレーターなどを使用していました...

そこで、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

明らかに、何らかの形でそれを独自の関数に貼り付けることができますが、独自の方法を使用して連想配列を結合する方法のアイデアが得られます。誰かを助けることを願っています:)

于 2009-02-03T14:06:21.150 に答える
21

1つの方法は使用print_r(array, true)であり、配列の文字列表現を返します

于 2013-01-05T15:13:53.633 に答える
20

これは、たとえばdivデータ属性の私のソリューションです:

<?

$attributes = array(
    'data-href'   => 'http://example.com',
    'data-width'  => '300',
    'data-height' => '250',
    'data-type'   => 'cover',
);

$dataAttributes = array_map(function($value, $key) {
    return $key.'="'.$value.'"';
}, array_values($attributes), array_keys($attributes));

$dataAttributes = implode(' ', $dataAttributes);

?>

<div class="image-box" <?= $dataAttributes; ?> >
    <img src="http://example.com/images/best-of.jpg" alt="">
</div>
于 2015-04-29T11:41:20.383 に答える
-2

これは私が考えることができる最も基本的なバージョンです:

public function implode_key($glue = "", $pieces = array())
{
    $keys = array_keys($pieces);
    return implode($glue, $keys);
}
于 2011-03-18T02:49:33.153 に答える
-3
echo implode(",", array_keys($companies->toArray()));

$companies->toArray()-- これは、your$variableがオブジェクトの場合に備えて、それ以外の場合は $companies を渡すだけです。

それでおしまい!

于 2016-03-11T04:53:52.203 に答える