سؤال

وأنا أبحث عن طريقة سريعة لتحويل مجموعة النقابي في لسلسلة. أن هيكل نموذجي يكون مثل سلسلة الاستعلام URL ولكن مع فواصل للتخصيص حتى أتمكن من استخدام '&' وصلات الأقسام المختلفة أو "&" لغير ذلك.

وقائي الاول الميل لاستخدام 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 من النقابي (أو المفهرسة) صف المقدمة.

نصائح أخرى

وبوصفها جانبا، وكنت في البحث للعثور على أفضل وسيلة لتنهار على مجموعة النقابي ولكن باستخدام seperators بلدي الخ ...

وهكذا فعلت ذلك باستخدام array_walk PHP ل() وظيفة لاسمحوا لي أن أشارك في مجموعة النقابي إلى قائمة من المعايير التي يمكن بعد ذلك أن يطبق على علامة 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"}]

وهذا هو الحل بلدي على سبيل المثال ل-سمات بيانات شعبة:

<?

$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) وسيعود تمثيل سلسلة من مجموعة

وA-سفينة واحدة لخلق سلسلة من سمات 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