কী সহ কোনও এসোসিয়েটিভ অ্যারে চালিত করার দ্রুততম উপায়


114

আমি কোনও এসোসিয়েটিভ অ্যারেগুলিকে স্ট্রিংয়ে পরিণত করার জন্য একটি দ্রুত উপায় সন্ধান করছি। টিপিক্যাল স্ট্রাকচারটি ইউআরএল ক্যোয়ারী স্ট্রিংয়ের মতো তবে কাস্টমাইজযোগ্য বিভাজকগুলির সাথে হবে যাতে আমি &এক্সএইচটিএমএল লিঙ্কগুলির জন্য ' &' বা অন্যথায় ' ' ব্যবহার করতে পারি ।

আমার প্রথম প্রবণতাটি ব্যবহার করা হয় foreachতবে যেহেতু আমার পদ্ধতিটি এক অনুরোধে বহুবার কল করা যেতে পারে আমি ভয় করি এটি খুব ধীর হতে পারে।

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

একটি দ্রুত উপায় আছে কি?


4
আপনি এইচটিএমএল আউটপুট দিচ্ছেন তা ভুলে যাবেন না, সঠিক বাক্য গঠনটি & amp; না এবং, iow এটি ভুল <a href="?name=joe&age=22 "> জো করুন </a> হ্যাঁ এটি কাজ করে তবে এটি অবৈধ এইচটিএমএল।
ট্র্যাভিসো

উত্তর:


174

আপনি এটি করতে ব্যবহার করতে পারেন http_build_query()

এসোসিয়েটিভ (বা সূচকযুক্ত) অ্যারে থেকে URL- এনকোডযুক্ত ক্যোরিয় স্ট্রিং উত্পন্ন করে।


আমি নিজে এই পিএইচপি এপিআইতে এই পদ্ধতিটি অনুসন্ধান করার চেষ্টা করছিলাম এটি অবশ্যই যাওয়ার উপায়। বিকল্পটি যদি না হয় তবে পরিবর্তিত ইমপ্লোড পদ্ধতি যেমন uk2.php.net/manual/en/function.implode.php#84684 ব্যবহার করা হয় তবে http_build_query () সঠিকভাবে দ্রুত হবে।
মার্ক ডেভিডসন

আমি অবাক হয়েছি যদি সত্যিই এটি সাধারণ প্রশ্নের দ্রুততম উপায় হয়। এই ফাংশনটিতে কিছু এনকোডিং চলছে। সুতরাং, যদি এটি কোনও ইউআরএলটির জন্য না হয় তবে এটি কি অ্যারে_ওয়াকের চেয়ে সত্যিই দ্রুত এবং যদি আপনি এটি এনকোড না চান তবে কী হবে?
ই-মোটিভ

10
সমস্যাটি http_build_queryবিশেষ চর থেকে অব্যাহতিমান
সিসিফাস

1
আমি সিরিয়ালাইজ (), জসন_কোড () এবং http_build_query () এর সাথে তুলনা করেছি। HTTP_build_query () সিরিয়ালাইজ () এর চেয়ে সামান্য ব্যবধানে জিতেছে, এবং জেসন_এনকোড এখন পর্যন্ত সবচেয়ে ধীর হয়ে গেছে।
আর্নেস্তভ

5
এটি বিশেষ অক্ষরগুলিকে এনকোড করে, তাই এটি কোনও ভাল বিকল্প নয়
জাভী

33

একদিকে যেমন, আমি কোনও এসোসিয়েটিভ অ্যারে চালিত করার জন্য তবে নিজের নিজস্ব পৃথককারী ইত্যাদি ব্যবহার করার সর্বোত্তম উপায় সন্ধান করতে গিয়েছিলাম ...

সুতরাং আমি পিএইচপি এর অ্যারে_ওয়াক () ফাংশনটি ব্যবহার করে আমাকে এমন কোনও এসএসএটিভেটিভ অ্যারের সাথে প্যারামিটারের তালিকায় যোগ দিতে দেব যা এইচটিএমএল ট্যাগে প্রয়োগ করা যেতে পারে ....

// 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

স্পষ্টতই, আপনি এটি কোনওভাবে নিজের ফাংশনে আটকে রাখতে পারেন তবে এটি আপনাকে নিজের পদ্ধতি ব্যবহার করে কীভাবে কোনও এসোসিয়েটিভ অ্যারেতে যোগ দিতে পারেন তা একটি ধারণা দেয়। আশা করি যে কাউকে সাহায্য করবে :)


6
ক্রিয়েট ফাংশনটির বাক্য গঠন যদি কাউকে বিভ্রান্ত করে, তবে php.net/manual/en/function.create-function.php দেখুন
ম্যাট ফ্লেচার

অ্যারে_ওয়াক অগ্রণীকরণ থেকে ধীর এবং পড়ার জন্য আরও জটিল। এটি দেখুন: reddit.com/r/PHP/comments/1uuc34/…
এনাইবি

এই সংস্করণটিকে প্রথম সমাধান হিসাবে কার্যকর হিসাবে পাওয়া গেছে হিসাবে http_build_query () এনকোড URL গুলি।
আর্নেস্তো অ্যালি

32

আপনি যদি সঠিক বিন্যাস সম্পর্কে উদ্বিগ্ন না হন তবে আপনি কিছু সাধারণ চান তবে লাইন ব্রেক ছাড়াই print_rআপনি json_encode($value)দ্রুত এবং সাধারণ বিন্যাসিত আউটপুট ব্যবহার করতে পারেন । ( নোট করুন এটি অন্যান্য ডেটা ধরণের ক্ষেত্রেও ভাল কাজ করে )

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

19

এটি একটি ডিভ ডেটা-অ্যাট্রিবিউটগুলির জন্য উদাহরণ হিসাবে আমার সমাধান:

<?

$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>

18

একটি উপায় ব্যবহার করছে print_r(array, true)এবং এটি অ্যারের স্ট্রিং প্রতিনিধিত্ব ফিরিয়ে দেবে


1
$ request_str = print_r ($: _ অনুরোধ, সত্য); // লগ ফাইলের জন্য
চ্যাপ্টা

2
তবে প্রিন্ট_আর ফর্ম্যাটে সেই ফলাফলগুলি key=valueসরবরাহ করা বিভাজকের সাথে যোগ হয় নি ।
রিকি

1
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) ;

1

একটি সাধারণ অ্যারে থেকে এইচটিএমএল বৈশিষ্ট্যগুলির স্ট্রিং (উদ্ধৃতি সহ) তৈরি করার জন্য একটি ওয়ান-লাইনার:

$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"

1

আমার সমাধান:

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

0

এই খাটো সম্পর্কে আরও কী, আরও স্বচ্ছ, অ্যারে_ওয়াকের সাথে আরও স্বজ্ঞাত

$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"

-2

এটি আমি ভাবতে পারি এটির সবচেয়ে প্রাথমিক সংস্করণ:

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

12
এটি কেবল কীগুলি প্রেরণ করে, এটি কোনও key=valueনির্বাচিত বিভাজকের সাথে প্ররোচিত হয় না !
রিকি

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

$companies->toArray()- এটি ঠিক যদি আপনার $variableকোনও বস্তু হয় তবে তা অন্যথায় কেবল $ সংস্থাগুলি পাস করুন।

এটাই!


এটি কেবল স্ট্রিংগুলিতে কীগুলি যুক্ত করে; মান হারিয়ে গেছে।
ফ্লফিকিটেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.