আমি কিছুটা বিভ্রান্ত হয়েছি কেন আমি পিএইচপি-তে কিছু কোড দেখি কেন স্ট্রিং সহ একক উদ্ধৃতিতে এবং কখনও কখনও ডাবল উদ্ধৃতিতে থাকে।
আমি কেবল নেট। বা সি ভাষায় জানি, এটি যদি একক উদ্ধৃতিতে থাকে তবে এর অর্থ এটি একটি অক্ষর নয়, একটি স্ট্রিং।
আমি কিছুটা বিভ্রান্ত হয়েছি কেন আমি পিএইচপি-তে কিছু কোড দেখি কেন স্ট্রিং সহ একক উদ্ধৃতিতে এবং কখনও কখনও ডাবল উদ্ধৃতিতে থাকে।
আমি কেবল নেট। বা সি ভাষায় জানি, এটি যদি একক উদ্ধৃতিতে থাকে তবে এর অর্থ এটি একটি অক্ষর নয়, একটি স্ট্রিং।
উত্তর:
পিএইচপি স্ট্রিংগুলি কেবল দুটি উপায়ে নয়, চারটি উপায়ে নির্দিষ্ট করা যায়।
\'
এবং একটি পিছনের স্ল্যাশ প্রদর্শন করতে আপনি এটি অন্য ব্যাকস্ল্যাশ দিয়ে এড়াতে পারবেন\\
( সুতরাং হ্যাঁ, এমনকি একক উদ্ধৃত স্ট্রিংগুলিও পার্স করা হয়েছে )।$type
এবং আপনি চানecho "The $types are"
। এটি ভেরিয়েবলের সন্ধান করবে$types
। এই ব্যবহারটি ঘিরেecho "The {$type}s are"
আপনি ডলারের চিহ্নের আগে বা পরে বামবন্ধটি বন্ধন করতে পারেন। অ্যারে ভেরিয়েবল এবং এর মতো কীভাবে ব্যবহার করতে হয় তা দেখতে স্ট্রিং পার্সিং এ একবার দেখুন।<<<
। এই অপারেটরের পরে, একটি সনাক্তকারী সরবরাহ করা হবে, তারপরে একটি নতুন লাইন। স্ট্রিংটি নিজেই অনুসরণ করে এবং তারপরে উদ্ধৃতি বন্ধ করতে আবার একই শনাক্তকারী। এই সিনট্যাক্সে আপনার উদ্ধৃতিগুলি এড়াতে হবে না।<<<
ব্যবহৃতএকইক্রমের সাহায্যেএকটি নওডক সনাক্ত করা যায়তবে সনাক্তকারী যা অনুসরণ করে তা একক উদ্ধৃতিতে আবদ্ধ থাকে, যেমন<<<'EOT'
। Nowdoc এ কোনও পার্সিং করা হয় না।নোটস: একক উদ্ধৃতিগুলির ভিতরে একক উদ্ধৃতি এবং ডাবল কোটের ভিতরে ডাবল উদ্ধৃতি অবশ্যই অব্যাহতিপ্রাপ্ত:
$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";
গতি:
আমি একক উদ্ধৃতিতে ডাবল কোটের চেয়ে দ্রুত হওয়াতে খুব বেশি ওজন রাখব না। তারা সম্ভবত কিছু পরিস্থিতিতে দ্রুত হয়। এখানে একটি নিবন্ধটি ব্যাখ্যা করা হচ্ছে যাতে পিএইচপি ৪.৩ ( Useless Optimizations
নীচে, বিভাগের দিকে C
) থেকে একক এবং ডাবল উদ্ধৃতিগুলি সমানভাবে দ্রুত হয় । এছাড়াও, এই বেঞ্চমার্ক পৃষ্ঠায় একটি একক বনাম ডাবল উদ্ধৃতি তুলনা রয়েছে। বেশিরভাগ তুলনা একই রকম। একটি তুলনা আছে যেখানে ডাবল উদ্ধৃতিগুলি একক উদ্ধৃতিগুলির চেয়ে ধীর।
\n
হয়, আমার PHP
কোডের অন্য কোনও কিছু একক উদ্ধৃতিতে রয়েছে।
"
ডাবল উদ্ধৃতিগুলির স্বচ্ছলতা কেবল অতীতের একটি বিষয়। আপডেটগুলি আজকাল চরম ক্ষেত্রে সমস্ত ক্ষেত্রে ডাবল কোটগুলির প্রসেসিং যত দ্রুত হয়েছে তা বৃদ্ধি পেয়েছে।
বিষয়গুলি ডাবল কোটে মূল্যায়ন করা হয় তবে একক নয়:
$s = "dollars";
echo 'This costs a lot of $s.'; // This costs a lot of $s.
echo "This costs a lot of $s."; // This costs a lot of dollars.
$mailbody = 'I want a line break:\nDone.';
রাখছে \n
। যেখানে: $mailbody = "I want a line break:\nDone.";
লাইন ব্রেকটি বিশ্লেষণ করবে।
$testWithAsciiAndUtf8Characters = "\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!";
$simpleTest = '\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!';
অক্ষরের ক্রমগুলি $testWithAsciiAndUtf8Characters
প্রকৃত অক্ষরের সাথে স্ট্রিংয়ে রূপান্তরিত হয়েছিল।
'
একক উদ্ধৃতস্ট্রিং নির্দিষ্ট করার সহজ উপায় হ'ল এটি একক উদ্ধৃতিতে সংযুক্ত করা। একক উক্তিটি সাধারণত দ্রুততর হয় এবং অভ্যন্তরের উদ্ধৃতিযুক্ত সমস্ত কিছুই সরল স্ট্রিং হিসাবে বিবেচিত হয়।
উদাহরণ:
echo 'Start with a simple string';
echo 'String\'s apostrophe';
echo 'String with a php variable'.$name;
"
ডাবল উদ্ধৃতপিএইচপি-তে ডাবল কোট ব্যবহার করুন পিরিয়ডকে পৃথক কোডের জন্য ব্যবহার করা এড়াতে (দ্রষ্টব্য: আপনি স্ট্রিংতে {}
কনক্যাটেনশন ( .
) অপারেটর) ব্যবহার করতে না চান তবে ভেরিয়েবলগুলি অন্তর্ভুক্ত করতে কোঁকড়া ধনুর্বন্ধনী ব্যবহার করুন ।
উদাহরণ:
echo "Start with a simple string";
echo "String's apostrophe";
echo "String with a php variable {$name}";
হ্যাঁ. একক উদ্ধৃতি ব্যবহার করা কিছুটা দ্রুত।
পিএইচপি একক উদ্ধৃতিতে কী রয়েছে তা ব্যাখ্যা করতে অতিরিক্ত প্রসেসিং ব্যবহার করবে না। আপনি যখন ডাবল উদ্ধৃতি ব্যবহার করেন তখন স্ট্রিংয়ের মধ্যে কোনও ভেরিয়েবল আছে কিনা তা পরীক্ষা করতে পিএইচপি কে পার্স করতে হয়।
\'
স্ট্রিং মধ্যে ব্যবহারের জন্য একটি একক ঊর্ধকমা অব্যাহতি (অথবা \\'
ব্যাকস্ল্যাশ প্রদর্শন করে)। নোট করুন যে traditionalতিহ্যবাহী পালানোর ক্রমগুলি যেমন \n
নিউলাইন চরিত্রে পার্স হবে না। স্ট্রিংগুলিতে পিএইচপি ডক্স
একটি একক-উদ্ধৃত স্ট্রিং এর ব্যাখ্যার মধ্যে ভেরিয়েবল নেই। একটি দ্বিগুণ উদ্ধৃত স্ট্রিং করে।
এছাড়াও, একটি ডাবল-কোটেড স্ট্রিংটিতে ব্যাকস্ল্যাশ ছাড়াই অ্যাডোস্ট্রোফ থাকতে পারে, যখন একক-উদ্ধৃত স্ট্রিংটিতে আনসকেপড উদ্ধৃতি চিহ্ন থাকতে পারে।
একক-উদ্ধৃত স্ট্রিং রানটাইমগুলিতে দ্রুত হয় কারণ তাদের পার্স করার প্রয়োজন হয় না।
পিএইচপি ইন, উভয় 'my name'
এবং "my name"
স্ট্রিং হয়। আপনি পিএইচপি ম্যানুয়াল এ সম্পর্কে আরও পড়তে পারেন ।
আপনার জানা উচিত ছিল
$a = 'name';
$b = "my $a"; == 'my name'
$c = 'my $a'; != 'my name'
পিএইচপি, মানুষ একটি ধ্রুবক স্ট্রিং সংজ্ঞায়িত করতে একক উদ্ধৃতি ব্যবহার করেন, মত 'a'
, 'my name'
, 'abc xyz'
, ডবল উদ্ধৃতি ব্যবহার করার সময় একটি স্ট্রিং সংজ্ঞায়িত করতে আইডেন্টিফায়ার মত ধারণ করে "a $b $c $d"
।
এবং অন্য জিনিসটি হ'ল
echo 'my name';
তুলনায় দ্রুত
echo "my name";
কিন্তু
echo 'my ' . $a;
তুলনায় ধীর
echo "my $a";
স্ট্রিংয়ের অন্যান্য ব্যবহৃত ক্ষেত্রে এটি সত্য।
<?php
$fname = "David";
// Single quotes
echo 'My name is $fname.'; // My name is $fname.
// Double quotes
echo "My name is $fname."; // My name is David.
// Curly braces to isolate the name of the variable
echo "My name is {$fname}."; // My name is David.
// Example of heredoc
echo $foo = <<<abc
My name is {$fname}
abc;
// Example of nowdoc
echo <<< 'abc'
My name is "$name".
Now, I am printing some
abc;
?>
পিএইচপি-তে, একক উদ্ধৃতি পাঠ্যটিকে স্ট্রিংয়ের মান হিসাবে বিবেচনা করা হয় এবং ডাবল উদ্ধৃতি পাঠ্যটি তাদের মানটি প্রতিস্থাপন ও প্রক্রিয়াজাতকরণের মাধ্যমে ভেরিয়েবলগুলি পার্স করবে।
$test = "variable";
echo "Hello Mr $test"; // the output would be: Hello Mr variable
echo 'Hello Mr $test'; // the output would be: Hello Mr $test
এখানে, ডাবল উদ্ধৃতি মানটিকে বিশ্লেষণ করে এবং একক উদ্ধৃতিটিকে স্ট্রিংয়ের মান হিসাবে বিবেচনা করা হয় ( $test
ভেরিয়েবলটিকে পার্সিং না করেই ))
এখানে ভেরিয়েবলের সাথে একক এবং ডাবল উদ্ধৃতিগুলির কয়েকটি সম্ভাবনা
$world = "world";
"Hello '.$world.' ";
'hello ".$world."';
একটি জিনিস:
এটি লক্ষ করা খুব গুরুত্বপূর্ণ যে হেরাদোকের সমাপ্তি শনাক্তকরণকারী রেখার সাথে একটি সেমিকোলন (;) ব্যতীত অন্য কোনও অক্ষর থাকতে হবে না । এর অর্থ বিশেষত যে শনাক্তকারী ইন্ডেন্টেড নাও হতে পারে এবং সেমিকোলনের আগে বা পরে কোনও স্পেস বা ট্যাব থাকতে পারে না ।
উদাহরণ:
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
সম্ভবত আমি কিছুটা দেরি করেছি, এবং কিছুটা অফ-টপিক, তবে এখানে এটি যাইহোক:
আপনার স্ট্রিংয়ের বিষয়বস্তু:
alert("It's \"game\" time.");
বা এর মধ্যে থাকার কারণে আপনাকে অবশ্যই পছন্দ করতে হবে নাalert('It\'s "game" time.');
আপনি যদি ইংরাজী উক্তি চিহ্নগুলির ব্যবহার এবং অ্যাডোস্ট্রোফের জন্য সঠিক চরিত্রের সাথে পরিচিত হন তবে আপনি দ্বিগুণ বা একক উদ্ধৃতি ব্যবহার করতে পারেন, কারণ এটির কোনও ব্যাপার হবে না:
alert("It’s “game” time.");
এবংalert('It’s “game” time.');
${variablename}
।