আমি কীভাবে পিএইচপি-তে একটি অ্যারে থেকে কমা-বিচ্ছিন্ন তালিকা তৈরি করব?


113

আমি জানি কিভাবে কীভাবে অ্যারের আইটেমগুলি ফোরচ ব্যবহার করে এবং কমা সংযোজন করতে হয়, তবে চূড়ান্ত কমাটি সরিয়ে ফেলতে কষ্ট হয় always এটি করার কোনও সহজ পিএইচপি উপায় আছে?

$fruit = array('apple', 'banana', 'pear', 'grape');

শেষ পর্যন্ত আমি চাই

$result = "apple, banana, pear, grape"

উত্তর:


231

আপনি এর জন্য ইমপ্লোড ব্যবহার করতে চান ।

অর্থাৎ, $commaList = implode(', ', $fruit);


কোনও পেছন ছাড়াই কমা যুক্ত করার একটি উপায় রয়েছে। আপনি একই সময়ে যদি অন্য কিছু ম্যানিপুলেশন করতে হয় তবে আপনি এটি করতে চাইবেন। উদাহরণস্বরূপ, হতে পারে আপনি প্রতিটি ফল উদ্ধৃত করতে চান এবং তারপরে সেগুলি কমা দ্বারা পৃথক করে:

$prefix = $fruitList = '';
foreach ($fruits as $fruit)
{
    $fruitList .= $prefix . '"' . $fruit . '"';
    $prefix = ', ';
}

এছাড়াও, আপনি যদি প্রতিটি আইটেমের পরে কমা যুক্ত করার "সাধারণ" পদ্ধতিটি করেন (যেমন মনে হয় আপনি আগে করছেন) এবং আপনাকে শেষটি ছাঁটাই করা দরকার, ঠিক তাই করুন $list = rtrim($list, ', ')। আমি substrএই পরিস্থিতিতে অনেক লোককে অহেতুক ঘৃণা করতে দেখছি ।


4
এটা আরো ইন্দ্রিয় ' "' ( '" $ ফল,।, করতে হবে কলে <কোড> $ fruitlist =)' " 'কেন্দ্রীভূত।"' (যদি কোট যোগ করার চেষ্টা); </ code> এ
cwallenpoole

আপনি যদি ডেটাটিকে স্ট্রিংয়ের আগে তৈরি করার আগে অ্যারেটিতে ডেটা ম্যানিপুলেট করতে চান তবে ফোরচ লুপটি আরও ভাল; উদাহরণস্বরূপ, অ্যাড্ল্যাশেলস, বা মাইএসকিএল_রিয়াল_সেসকেপ_স্ট্রিং।
নেফতলি গিলিয়েড

39

এইভাবে আমি এটি করছি:

$arr = array(1,2,3,4,5,6,7,8,9);

$string = rtrim(implode(',', $arr), ',');

echo $string;

আউটপুট:

1,2,3,4,5,6,7,8,9

লাইভ ডেমো: http://ideone.com/EWK1XR

সম্পাদনা: প্রতি @ জোসেয়ান্টজিভির মন্তব্য, আপনার rtrim()উপরের উদাহরণটি থেকে মুছে ফেলতে সক্ষম হওয়া উচিত । অর্থাৎ,

$string = implode(',', $arr);

5
উপরে উত্তর হিসাবে, আপনি কেবল
ইমপ্লোড

@ জোসেণ্টজিভি আপনি ঠিক বলেছেন, আমি কেন জানি ব্যবহার করি না rtrim()। আমি মনে করি স্ট্রিংয়ের শেষে অতিরিক্ত কমা থাকার ক্ষেত্রে একটি সমস্যা আছে, তবে এটি যে পরিস্থিতিটি ঘটছিল তা মনে করতে পারি না।
নাট

6

andশেষ পর্যন্ত ফলাফল :

$titleString = array('apple', 'banana', 'pear', 'grape');
$totalTitles = count($titleString);
if ($totalTitles>1) {
    $titleString = implode(', ', array_slice($titleString, 0, $totalTitles-1)) . ' and ' . end($titleString);
} else {
    $titleString = implode(', ', $titleString);
}

echo $titleString; // apple, banana, pear and grape

3

লয়েডের উত্তরের মতো, তবে যে কোনও আকারের অ্যারে নিয়ে কাজ করে।

$missing = array();
$missing[] = 'name';
$missing[] = 'zipcode';
$missing[] = 'phone';

if( is_array($missing) && count($missing) > 0 )
        {
            $result = '';
            $total = count($missing) - 1;
            for($i = 0; $i <= $total; $i++)
            { 
              if($i == $total && $total > 0)
                   $result .= "and ";

              $result .= $missing[$i];

              if($i < $total)
                $result .= ", ";
            }

            echo 'You need to provide your '.$result.'.';
            // Echos "You need to provide your name, zipcode, and phone."
        }

3

আমি ফর লুপে একটি আইএফ স্টেটমেন্ট ব্যবহার করতে পছন্দ করি যা বর্তমান পুনরাবৃত্তির অ্যারেতে সর্বশেষ মান নয় তা নিশ্চিত করে পরীক্ষা করে। যদি তা না হয় তবে কমা যুক্ত করুন

$fruit = array("apple", "banana", "pear", "grape");

for($i = 0; $i < count($fruit); $i++){
    echo "$fruit[$i]";
    if($i < (count($fruit) -1)){
      echo ", ";
    }
}

2
যদি মোট গণনা 4 এর চেয়ে আলাদা হয়?
জ্যোতিশ

1

কখনও কখনও আপনার এমনকি কিছু ক্ষেত্রে পিএইচপি প্রয়োজন হয় না (উদাহরণস্বরূপ রেন্ডারে আইটেমগুলির প্রত্যেকের নিজস্ব জেনেরিক ট্যাগ থাকে) আপনি সর্বদা সমস্ত উপাদানগুলিতে কমা যোগ করতে পারেন তবে সিএসএসের মাধ্যমে সর্বশেষ-সন্তানের যদি তারা রেন্ডার হওয়ার পরে পৃথক উপাদান থাকে তবে লিপি থেকে।

আমি ব্যাকবোন অ্যাপ্লিকেশনগুলিতে কিছুটা স্বেচ্ছাসেবীর কোড ফ্যাট ছাঁটাই করতে এটি ব্যবহার করি:

.likers a:not(:last-child):after { content: ","; }

মূলত উপাদানটির দিকে নজর দেয়, এটি সর্বশেষ উপাদানটি ব্যতীত সকলকে লক্ষ্য করে এবং প্রতিটি আইটেমের পরে এটি কমা যোগ করে। কেসটি প্রযোজ্য হলে কেবলমাত্র বিকল্প পদ্ধতিতে স্ক্রিপ্টটি ব্যবহার করতে হবে না।



0

একটি কার্যকরী সমাধান এইভাবে যেতে হবে:

$fruit = array('apple', 'banana', 'pear', 'grape');
$sep = ','; 

array_reduce(
    $fruits,
    function($fruitsStr, $fruit) use ($sep) {
        return (('' == $fruitsStr) ? $fruit : $fruitsStr . $sep . $fruit);
    },
    ''
);

0

এটি অনুসরণ করুন

$teacher_id = '';

        for ($i = 0; $i < count($data['teacher_id']); $i++) {

            $teacher_id .= $data['teacher_id'][$i].',';

        }
        $teacher_id = rtrim($teacher_id, ',');
        echo $teacher_id; exit;

-1

উদ্ধৃত উত্তরগুলি করা হলে, আপনি এটি করতে পারেন

$commaList = '"'.implode( '" , " ', $fruit). '"';

উপরের অংশটি ধরে নেয় যে ফলগুলি নাল নয়। আপনি যদি এই ধারণাটি না করতে চান তবে আপনি যদি অন্যথায় বিবৃতি বা ত্রৈমাসিক (? :) অপারেটরটি ব্যবহার করতে পারেন।


-2

আর একটি উপায় এটি হতে পারে:

$letters = array("a", "b", "c", "d", "e", "f", "g");

$result = substr(implode(", ", $letters), 0, -3);

আউটপুট $resultএকটি দুর্দান্ত বিন্যাসিত কমা দ্বারা পৃথক তালিকা।

a, b, c, d, e, f, g

-2
$letters = array("a", "b", "c", "d", "e", "f", "g"); // this array can n no. of values
$result = substr(implode(", ", $letters), 0);
echo $result

আউটপুট-> এ, বি, সি, ডি, ই, এফ, জি

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