أسرع طريقة لتنهار على مجموعة النقابي مع مفاتيح
-
03-07-2019 - |
سؤال
وأنا أبحث عن طريقة سريعة لتحويل مجموعة النقابي في لسلسلة. أن هيكل نموذجي يكون مثل سلسلة الاستعلام URL ولكن مع فواصل للتخصيص حتى أتمكن من استخدام '&
' وصلات الأقسام المختلفة أو "&
" لغير ذلك.
وقائي الاول الميل لاستخدام foreach
لكن منذ لي طريقة يمكن تسميته عدة مرات في طلب واحد وأخشى أنه قد يكون بطيئا جدا.
<?php
$Amp = $IsXhtml ? '&' : '&';
$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
الخاص بك هو كائن، وإلا يمر $ الشركات.
وهذا كل شيء!