স্ট্রিং পিএইচপি থেকে অ্যারে?


282

একটি পিএইচপি অ্যারে একটি স্ট্রিংয়ে রূপান্তর করার জন্য সর্বোত্তম পদ্ধতি কী?
আমার কাছে ভেরিয়েবল রয়েছে $typeযা ধরণের অ্যারে।

$type = $_POST[type];

আমি এটিকে পৃথক প্রতিটি এন্ট্রি দিয়ে আমার ডাটাবেসে একক স্ট্রিং হিসাবে সঞ্চয় করতে চাই |:

স্পোর্টস | উৎসব | অন্যান্য


24
অনুগ্রহ করে ডাটাবেসে ক্রমিক মানগুলি প্রবেশ করা থেকে বিরত থাকুন। এখানে কেন stackoverflow.com/questions/7364803/...
NullUserException

14
@ নুল ইউজারএক্সেপশন ఠ_ఠ আমি সম্মত হই যে ডিবিতে সিরিয়ালযুক্ত মান সন্নিবেশ করানো কেবল একেবারে চোখ পোড়াবে, তবে আপনি তার পরিস্থিতি জানেন না - এটি খুব ভালভাবেই সংশোধিত হতে পারে।
ক্রুদ্ধহ্যাকার

4
আমি মনে করি এই প্রশ্নটি আবার খোলা উচিত। এটি নতুনদের জন্য দরকারী প্রশ্ন এবং আমি মনে করি না যে এটি অফ-টপিক।
সৈয়দবাকআর

1
অ্যারেতে থাকা কিছু মানের যদি অক্ষর থাকে তবে কি হবে?
সামিট

তারপরে আপনি এই অক্ষরগুলি থেকে বাঁচতে পারবেন। এখানে এটি পড়ুন। php.net/manual/en/regexp.references.escape.php
ফরচুনসোলজিয়ার

উত্তর:


352

কেবল ইমপ্লোড ব্যবহার করুন

implode("|",$type);

13
যদি আপনার অ্যারে নেস্ট করা থাকে না তবে এটি ভাল - $_POSTযদি আপনি অ্যারে-নামযুক্ত ফর্ম ইনপুটগুলি ব্যবহার করেন তবে এটি ঘটতে পারে ।
লেথ

নেস্টেড অ্যারেগুলি কেবল একটি অগ্রণী ব্যবহার করে এটি কাজ করবে।
ডিপসেল

224

আপনি json_encode () ব্যবহার করতে পারেন

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>

পরে আপনার ডিবি থেকে স্ট্রিংটি ডিকোড করতে কেবল json_decode () ব্যবহার করুন । অন্য যে কোনও কিছুই অকেজো, জেএসএন পরবর্তী ব্যবহারের জন্য অ্যারের সম্পর্ককে অক্ষত রাখে!


40
" অন্য যে কোনও কিছুই অকেজো " ... সম্ভবত ডেটা স্বাভাবিককরণ ব্যতীত।
ড্যান লাগেজ

5
রোফেল @ আমার উপরে মন্তব্য। যেমনটি আপনি বলেছেন, কম্বল বিবৃতি প্রায় সবসময়, অসহায়।
অ্যারন কোল

12
আপনারা আনন্দিত
জাকুব

16
"স্যুইপিং জেনারালাইজেশনগুলির পাশাপাশি বিস্মৃতও সর্বদা ভুল Always সবসময়" " ;)
অলি

আমি পছন্দ করি যে এটি চাবি রাখে। এটি পরবর্তী ব্যবহারের জন্য খুব দরকারী।
অ্যাপোলোমক্সিক

45
json_encode($data) //converts an array to JSON string
json_decode($jsonString) //converts json string to php array

কেন জেএসএন: আপনি বেশিরভাগ প্রোগ্রামিং ভাষার সাথে এটি ব্যবহার করতে পারেন, পিএইচপি এর সিরিয়ালাইজ () ফাংশন দ্বারা নির্মিত স্ট্রিং কেবলমাত্র পিএইচপিতে পঠনযোগ্য এবং আপনি যদি আপনার ডাটাবেসে এই জাতীয় জিনিসগুলি সংরক্ষণ করতে পছন্দ করেন না তবে বিশেষত যদি ডাটাবেসে লিখিত অ্যাপ্লিকেশনগুলির মধ্যে ভাগ করা থাকে বিভিন্ন প্রোগ্রামিং ভাষা


1
জেএফআই আমার ব্যবহারের জন্য আমাকে $ ডেটা = জসন_ডেকোড ($ জসনস্ট্রিং, সত্য) কল করতে হয়েছিল
টার্মিনালিটি

দ্বিতীয় যুক্তি alচ্ছিক, বেশিরভাগ ক্ষেত্রে এটি ছাড়াই কাজ করে।
21:58

এটি একক বা একাধিক মাত্রার অ্যারে জন্য দুর্দান্ত কাজ করে এবং আমার মতে এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। দ্বিতীয় প্যারামিটার হিসাবে সত্য যোগ করার বিষয়টিও বিবেচনা করুন।
একত্রিত করুন

36

না, আপনি এটির মতো আপনার ডাটাবেসে একটি স্ট্রিং হিসাবে সংরক্ষণ করতে চান না।

আপনি ব্যবহার করতে পারেন serialize()তবে এটি আপনার ডেটা অনুসন্ধান করতে আরও শক্ত করে, কাজ করা আরও কঠিন এবং স্থান অপচয় করবে।

আপনি অন্য কিছু এনকোডিংও করতে পারেন, তবে এটি সাধারণত একই সমস্যার ঝুঁকিতে রয়েছে।

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

উদাহরণ:

id | word
1  | Sports
2  | Festivals
3  | Classes
4  | Other

আপনি সহজেই এসকিউএল দিয়ে টেবিল থেকে ডেটা নির্বাচন করবেন, এমন কোনও টেবিলের মতো দেখানোর চেয়ে:

id | word
1  | Sports|Festivals|Classes|Other

এটি যেভাবে কোনও সম্পর্কিত ডেটাবেজে কোনও স্কিমা ডিজাইন করে না, এটি সম্পূর্ণরূপে এর উদ্দেশ্যকে পরাস্ত করে।


2
নিশ্চিত যে, আপনি ডিলিমিটরদের এড়াতে হবে না!
ক্রিস জি।

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

6
এই প্রশ্নের সঠিক উত্তরটি হ'ল: কোনও আরডিবিএমএসে ক্রমিক মানগুলি প্রবেশ করবেন না। এটি ধর্ষকদের আহ্বান করা উচিত এমন এক জিনিস ।
নুল ইউজারএক্সেপশন

1
@ টিটিভদেব: জেসন-পলায়ন কিছু পরিস্থিতিতে এসকিউএল পালানোর সাথে সামঞ্জস্য হতে পারে তবে এর উপর নির্ভর করে আপনাকে শেষ পর্যন্ত জ্বালিয়ে দেবে। জেএসএন ব্যাকস্ল্যাশ ব্যবহার করে - আপনি যদি এমন কোনও ডিবিতে থাকেন যা ব্যাকস্ল্যাশগুলি সনাক্ত করে না এবং পালানোর জন্য দ্বিগুণ-কোট ব্যবহার করে? যেমন ''পরিবর্তে \'?
মার্ক বি

1
যদিও আমি এখানে প্রকাশিত নীতির সাথে একমত (সাধারণ রূপগুলি ভাল, কাঠামোতে ডিবি ব্যবহার করা ভাল, ডু), তবে কোনও উত্তর যা "না, আপনি চান না ..." দিয়ে শুরু হয় তা আমার মাথায় ঘণ্টা বেঁধে দেয়। আপনার কাছে প্রশ্নকারীর প্রশ্নের সম্পূর্ণ প্রসঙ্গ নেই, এবং এটি বিশ্বাস করুন বা না করুন, তাদের কাছে এই নির্দিষ্ট ডেটাটিকে অস্বীকৃতি জানাতে এবং একক ক্ষেত্রে এটি সংরক্ষণ করার একটি দুর্দান্ত কারণ থাকতে পারে । না, আপনি সর্বজ্ঞ নন; আপনি জানেন না যে প্রশ্নকারী কী চায়। আপনার মতামত একটি মন্তব্যে রাখুন , উত্তর নয় , দয়া করে।
সিস্টেম PAUSE

35

অন্যতম সেরা উপায়:

echo print_r($array, true);

10
দয়া করে আপনার উত্তরটি বিস্তারিতভাবে দেখান, এটি কীভাবে সমস্যার সমাধান করে তা দেখিয়ে দিন
আমাদের ম্যান ইন কলা

1
আপনি এটিও ব্যবহার করতে পারেন: "মুদ্রণ_আর (ray অ্যারে, মিথ্যা);", এটি কোনও মান না দিয়ে অ্যারে প্রিন্ট করবে। যদি সত্য দেওয়া হয়, মুদ্রণ_আর () এর নিজস্ব মুদ্রণ করবে না এবং কেবল স্ট্রিংটি ফিরিয়ে দেবে। আরও এখানে: php.net/manual/en/function.print-r.php
গ্যারেট

এই json_decodeফর্ম্যাটটি বিভ্রান্তির কারণ নিয়ে গণ্ডগোল হওয়ায় এটি সেরা হওয়া উচিত ।
আমিনাহ নুরাইনি

14

ইমপ্লোড () :

<?php
$string = implode('|',$types);

যাইহোক, ছদ্মবেশটি সঠিক, আপনি সম্ভবত এটি সেভাবে সংরক্ষণ করতে চান না - এটি আপনার ডাটাবেসের আপেক্ষিক শক্তির মোট অপচয়।

যদি আপনি সিরিয়ালাইজেশনে ডেড-সেট হয়ে থাকেন তবে আপনি json_encode () ব্যবহার করার বিষয়টিও বিবেচনা করতে পারেন



11

এটি একটি কী এবং ভ্যালু সংরক্ষণ করে

function array2string($data){
    $log_a = "";
    foreach ($data as $key => $value) {
        if(is_array($value))    $log_a .= "[".$key."] => (". array2string($value). ") \n";
        else                    $log_a .= "[".$key."] => ".$value."\n";
    }
    return $log_a;
}

আশা করি এটি কাউকে সাহায্য করবে।


6
$data = array("asdcasdc","35353","asdca353sdc","sadcasdc","sadcasdc","asdcsdcsad");

$string_array = json_encode($data);

এখন আপনি ডাটাবেসে এই $ স্ট্রিং_আরে মান সন্নিবেশ করতে পারেন


5

স্টোর এসোসিয়েটিভ অ্যারেগুলির জন্য আপনি ব্যবহার করতে পারেন serialize:

$arr = array(
    'a' => 1,
    'b' => 2,
    'c' => 3
);

file_put_contents('stored-array.txt', serialize($arr));

এবং লোড ব্যবহার করে unserialize:

$arr = unserialize(file_get_contents('stored-array.txt'));

print_r($arr);

তবে যদি .phpঅ্যারে (উদাহরণস্বরূপ কনফিগার ফাইল) সহ ক্রিয়েটিক ডায়নামিক ফাইলগুলির প্রয়োজন হয় তবে আপনি এটি ব্যবহার করতে পারেন var_export(..., true);:

ফাইলে সংরক্ষণ করুন:

$arr = array(
    'a' => 1,
    'b' => 2,
    'c' => 3
);

$str = preg_replace('#,(\s+|)\)#', '$1)', var_export($arr, true));
$str = '<?php' . PHP_EOL . 'return ' . $str . ';';

file_put_contents('config.php', $str);

অ্যারের মান পান:

$arr = include 'config.php';

print_r($arr);

3

আপনি পিএইচপি স্ট্রিং ফাংশন ব্যবহার করতে পারেন implode()

ভালো লেগেছে,

<?php
  $sports=$_POST['sports'];;
  $festival=$_POST['festival'];
  $food=$_POST['food'];
  $array=[$sports,$festival,$food];
  $string=implode('|',$array);
  echo $string;
?>

যদি, উদাহরণস্বরূপ, $sports='football'; $festival='janmastami'; $food='biriyani';

তারপরে আউটপুটটি হবে:

football|janmastami|biriyani

পিএইচপি ইমপ্লোড () ফাংশন সম্পর্কে আরও তথ্যের জন্য ডাব্লু 3 স্কুলগুলিতে পড়ুন


0

অনেক উপায় আছে,

এর জন্য দুটি সেরা উপায়

$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
//ouputs as
{"a":1,"b":2,"c":3,"d":4,"e":5}


$b = array ('m' => 'monkey', 'foo' => 'bar', 'x' => array ('x', 'y', 'z'));
$results = print_r($b, true); // $results now contains output from print_r

আপনি ইতিমধ্যে দেওয়া উত্তরগুলি পুনরাবৃত্তি করছেন। এটি নতুন মান বা নতুন পদ্ধতি যুক্ত করে না।
তুষাল্লাকা

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