문제

나는 연관 배열을 문자열로 바꿀 수있는 빠른 방법을 찾고 있습니다. 일반적인 구조는 URL 쿼리 문자열과 같지만 사용자 정의 가능한 분리기가 있으므로 사용할 수 있습니다. '&'XHTML 링크 또는'&' 그렇지 않으면.

나의 첫 번째 성향은 사용하는 것입니다 foreach 그러나 한 번의 요청으로 내 방법이 여러 번 호출 될 수 있으므로 너무 느릴 수 있습니다.

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

더 빠른 방법이 있습니까?

도움이 되었습니까?

해결책

당신이 사용할 수있는 http_build_query() 하기 위해서.

제공된 연관 (또는 인덱스) 배열에서 URL 인코딩 쿼리 문자열을 생성합니다.

다른 팁

제쳐두고, 나는 연관 배열을 멸시하는 가장 좋은 방법을 찾기 위해 찾고 있었지만 내 자신의 분리기 등을 사용했습니다 ...

그래서 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

분명히, 당신은 자신의 기능으로 어떻게 든 그것을 고수 할 수 있지만, 그것은 당신에게 자신의 방법을 사용하여 연관 배열에 합류 할 수있는 방법에 대한 아이디어를 제공합니다. 누군가를 도와주기를 바랍니다 :)

당신이 걱정하지 않는다면 정확한 그러나 서식하지만 당신은 단순한 것을 원하지만 라인 브레이크없이 print_r 당신은 또한 사용할 수 있습니다 json_encode($value) 빠르고 간단한 형식의 출력. (다른 데이터 유형에서도 잘 작동합니다)

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

이것은 예를 들어 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>

한 가지 방법은 사용 중입니다 print_r(array, true) 배열의 문자열 표현을 반환합니다

간단한 배열에서 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"
function array_to_attributes ( $array_attributes )
{

    $attributes_str = NULL;
    foreach ( $array_attributes as $attribute => $value )
    {

        $attributes_str .= " $attribute=\"$value\" ";

    }

    return $attributes_str;
}

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

echo array_to_attributes($attributes) ;

이 짧고 투명하지만 Array_walk와 더 직관적 인이 정보는 어떻습니까?

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

$args = "";
array_walk(
    $attributes, 
    function ($item, $key) use (&$args) {
        $args .= $key ." = '" . $item . "' ";  
    }
);
// output: 'data-href="http://example.com" data-width="300" data-height="250" data-type="cover"

내 해결책 :

$url_string = http_build_query($your_arr);
$res = urldecode($url_string); 

이것은 내가 생각할 수있는 가장 기본적인 버전입니다.

public function implode_key($glue = "", $pieces = array())
{
    $keys = array_keys($pieces);
    return implode($glue, $keys);
}
echo implode(",", array_keys($companies->toArray()));

$companies->toArray() - 이것은 당신의 경우를 대비하는 경우입니다 $variable 대상입니다. 그렇지 않으면 단지 $ 회사를 통과하십시오.

그게 다야!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top