কীভাবে বুলিয়ানকে স্ট্রিংয়ে রূপান্তর করবেন


242

আমার একটি বুলিয়ান ভেরিয়েবল আছে যা আমি একটি স্ট্রিংয়ে রূপান্তর করতে চাই:

$res = true;

আমার রূপান্তরিত মানটি ফর্ম্যাটটিতে থাকতে হবে: "true" "false"না"0" "1"

$converted_res = "true";
$converted_res = "false";

আমি চেষ্টা করেছিলাম:

$converted_res = string($res);
$converted_res = String($res);

তবে এটি আমাকে জানিয়েছে stringএবং Stringস্বীকৃত ফাংশনগুলি নয়।
এই বুলিয়ানকে আমি কীভাবে পিএইচপি ফর্ম্যাটে "true"বা স্ট্রিংতে রূপান্তর করব "false"?


1
নতুন ব্যবহারের ফাংশন ((স্ট্রিং) $ প্যারাম [বুলিয়ান টাইপ]) {যদি ($ প্যারাম) {....}} কারণ (স্ট্রিং) মিথ্যা => "মিথ্যা" মিথ্যা নয় ...
zloctb

উত্তর:


361

সহজ সমাধান:

$converted_res = $res ? 'true' : 'false';


1
এটি এটি করার সহজতম উপায়, তবে এটি আপনার যা প্রয়োজন তা তার উপর নির্ভর করে কারণ এটি সবচেয়ে ভাল ক্ষতি নয়।
অ্যান্ড্রোমে

1
@ ডুমস্টোন আমি জানি এটি 3 বছর কেটে গেছে, তবে আমি কেবল এটি জানতে চেয়েছিলাম যে কিছু ক্ষেত্রে আপনি কী ভাবেন এটি সর্বোত্তম সমাধান নয়। ?:স্বরলিপি সবচেয়ে সরলীকৃত কোড আমরা এই অবস্থায় নিয়ে আসা যায়।
caiosm1005

1
উদাহরণস্বরূপ আমার পক্ষে, এটি হাতের কেসটির পক্ষে সেরা সমাধান নয়: আমি নিশ্চিত নই যে প্রত্যাবর্তনের মূল্যের ধরনটি কী; এটি বুলিয়ান বা অন্য কিছু হতে পারে। (ডিবাগিংয়ের সময় অন্য কারও কাছে লেখা একটি ফাংশনকে কল করা।) আপনার সমাধানটি বুলিয়ানকে রূপান্তরিত করে, যেখানে var_export সমস্ত সম্ভাব্য ধরণের পরিচালনা করতে পারে।

13
@ ব্যবহারকারী ২৪৩৪১৪77 ধরণের বুলেয়ান হ'ল আক্ষরিক অর্থেই প্রশ্নটিতে উল্লিখিত প্রথম সত্য। আপনি যে ধরণের লেনদেন করছেন সে সম্পর্কে আপনি যদি নিশ্চিত না হন তবে আপনার শুরুতে সমস্যাগুলির সম্পূর্ণ অন্য সেট রয়েছে।
nem75

3
নোট করুন যে আপনি যখন টের্নারি অপারেটর এবং স্ট্রিং কনটেনটেশন মিশ্রিত করেন তখন আপনাকে অতিরিক্ত বন্ধনী প্রয়োজন। echo '<active>' . $res ? 'true' : 'false' . '</active>';কাঙ্ক্ষিত ফলাফল দেয় না, echo '<active>' . ($res ? 'true' : 'false') . '</active>';না।
সালমান এ

194

ফাংশন var_export একটি পরিবর্তনশীল একটি স্ট্রিং উপস্থাপনা ফেরৎ, তাই আপনি এই কাজ করতে পারে:

var_export($res, true);

দ্বিতীয় আর্গুমেন্টটি ফাংশনটিকে প্রতিধ্বনিত না করে স্ট্রিংটি ফিরে আসতে বলে।


নিখুঁত উত্তর. এটি হ'ল "পিএইচপি" উপায় "... একটি ভেরিয়েবলের পার্সেবল স্ট্রিং প্রতিনিধিত্ব"
পিটারচাউলা

62

করার আরেকটি উপায়: json_encode( booleanValue )

echo json_encode(true);  // string "true"

echo json_encode(false); // string "false"

// null !== false
echo json_encode(null);  // string "null"

6
আমি মনে করি শব্দার্থিকভাবে ব্যবহার var_export()করা অপারেশনের অভিপ্রায় অনুসারে বেশি রাখে (যদি না কাউকে কিছু জেএসওএন এর স্ট্রিং প্রয়োজন হয়, অর্থাৎ ;-)
অ্যাডাম ক্যামেরন

3
এটি সত্যই যে পার্শ্ব-প্রতিক্রিয়াটির উপর নির্ভর করে যে জেএসএনের প্রতিনিধিত্ব যা চেয়েছিল তেমনই ঘটেছে। এটি JSON এক্সটেনশানটি ইনস্টল করা এবং সক্ষম হওয়ার উপরও নির্ভর করে, যা খুব সম্ভবত হতে পারে তবে প্রদত্ত নয়। সুতরাং ইমো এটি পরিষ্কার সমাধান নয়।
নিক রাইস

35

Var_export দেখুন


3
দেখুন খ্রিস্টানের উত্তর আরো বিস্তারিত জন্য। বিশেষত, দ্বিতীয় যুক্তি (সত্য) অন্তর্ভুক্ত করুন।
জিমোথি

এটি একটি "লিঙ্ক-ওয়ান" উত্তর, যা কোনও "উত্তর" এর জন্য এসও নির্দেশিকাগুলি মেনে নেয় না। editলিঙ্ক থেকে আপনার পোস্টে প্রাসঙ্গিক তথ্য অন্তর্ভুক্ত করতে দয়া করে । তথ্যটি কার্যকর হওয়ার সাথে সাথে এটি ওপিতে একটি "মন্তব্য" হিসাবে যথাযথভাবে রেখে দেওয়া হয়েছে। লিঙ্ক থেকে সমস্ত প্রয়োজনীয় তথ্য অবশ্যই উত্তর এম্বেড করা আবশ্যক। 1) লিঙ্কটি যদি না পারা যায় তবে এই পোস্টটি অকেজো হয়ে যাবে। 2) দর্শকদের বাহ্যিক লিঙ্কগুলি দেখার প্রয়োজন হবে না, কেবল এটি নিজেরাই বের করতে। এটি বলেছিল, ডকুমেন্টেশন, উত্স বা অতিরিক্ত তথ্যের লিঙ্কগুলি অত্যন্ত উত্সাহিত। আপনার অবদানের জন্য ধন্যবাদ।
শেরিলহোমান

12

আপনি পিএইচপি-তে স্ট্রিংয়ে রূপান্তর করতে স্ট্রাল () বা (স্ট্রিং) ব্যবহার করেন। তবে, এটি বুলিয়ানকে "সত্য" বা "মিথ্যা" এর আসল বানানে রূপান্তরিত করে না তাই আপনাকে নিজেরাই এটি করতে হবে। এখানে একটি উদাহরণ ফাংশন:

function strbool($value)
{
    return $value ? 'true' : 'false';
}
echo strbool(false); // "false"
echo strbool(true); // "true"

তাহলে $val = true;তারপর strval($val)এবং (string) $valউভয় রিটার্ন 1.
ABach

9

এখানে অন্যান্য সমাধানগুলির সকলের মধ্যে সতর্কতা রয়েছে (যদিও তারা প্রশ্নটিতে হাতের মুঠোয় রয়েছে)। আপনি যদি (1) মিশ্র প্রকারের চেয়ে বেশি লুপিং করেন বা (2) এমন একটি জেনেরিক সমাধান চান যা আপনি একটি ফাংশন হিসাবে রফতানি করতে পারেন বা আপনার ইউটিলিটিগুলিতে অন্তর্ভুক্ত করতে পারেন তবে এখানে অন্য সমাধানগুলির কোনওটিই কাজ করবে না।

সবচেয়ে সহজ এবং সবচেয়ে স্ব-ব্যাখ্যামূলক সমাধানটি হ'ল:

// simplest, most-readable
if (is_bool($res) {
    $res = $res ? 'true' : 'false';
}

// same as above but written more tersely
$res = is_bool($res) ? ($res ? 'true' : 'false') : $res;

// Terser still, but completely unnecessary  function call and must be
// commented due to poor readability. What is var_export? What is its
// second arg? Why are we exporting stuff?
$res = is_bool($res) ? var_export($res, 1) : $res;

তবে বেশিরভাগ বিকাশকারী আপনার কোডটি পড়ার জন্য http://php.net/var_export এ ভ্রমণের প্রয়োজন var_exportএবং কী করবে এবং দ্বিতীয় পরম কী তা বুঝতে understand

1। var_export

booleanইনপুট জন্য কাজ করে কিন্তু অন্য সব কিছুকে stringপাশাপাশি রূপান্তর করে ।

// OK
var_export(false, 1); // 'false'
// OK
var_export(true, 1);  // 'true'
// NOT OK
var_export('', 1);  // '\'\''
// NOT OK
var_export(1, 1);  // '1'

2। ($res) ? 'true' : 'false';

বুলিয়ান ইনপুটটির জন্য কাজ করে তবে অন্য সমস্ত কিছু (ইনটস, স্ট্রিং) সত্য / মিথ্যাতে রূপান্তর করে।

// OK
true ? 'true' : 'false' // 'true'
// OK
false ? 'true' : 'false' // 'false'
// NOT OK
'' ? 'true' : 'false' // 'false'
// NOT OK
0 ? 'true' : 'false' // 'false'

3। json_encode()

একই সমস্যা var_exportএবং সম্ভবত সবচেয়ে খারাপ যেহেতু json_encodeএটি স্ট্রিংটি trueস্ট্রিং বা বুলিয়ান উদ্দেশ্য ছিল কিনা তা জানতে পারে না ।


var_export()ধন্যবাদ, নির্দিষ্ট ব্যবহারের ক্ষেত্রে সবচেয়ে ভাল বলে মনে হচ্ছে।
ড। জিয়ানলুইগি জেন ​​জ্যানেটিিনি

পিএইচপি 5.5+ ইনস্টলেশনগুলির জন্য, var_export(boolval($var), true)মানটিকে সত্য "সত্য" বা "মিথ্যা" রূপান্তর করতে নিরাপদ উপায় way
মুরগি

if (is_bool($res) { $res = $res ? 'true' : 'false'; } << এটি কাজ করবে না - ) সম্ভবত এটির ব্যবহারের আরও ভাল অনুপস্থিত$result = (is_bool($var) && $var) ? 'true' : 'false';
mtizziani

@ আলেম্বম কী সম্পর্কে: $value = is_bool($value) ? var_export($value, true) : $value;এইভাবে আমি মানটি অক্ষুণ্নভাবে বেঁচে থাকি এবং কেবল বুলিয়ানকে তাদের স্ট্রিং উপস্থাপনায় পরিবর্তন করি।
ডিকোয়ান

আপনার কোডের প্রথম মুখ্য লাইনে, আপনার কাছে রয়েছে: $res = $res?? আপনি বলতে চাইছেন: $res == $res? বা এমন কি: $res === $res?
শেরিলহোমান


2

আমার জন্য, আমি স্ট্রিং প্রতিনিধিত্ব চেয়েছিলাম যদি না এটি না হয় null, সেই ক্ষেত্রে আমি এটি থাকতে চাইতাম null

Var_export এর সমস্যা হ'ল এটি nullএকটি স্ট্রিতে রূপান্তরিত হয় "NULL"এবং এটি খালি স্ট্রিংকে রূপান্তর করে "''"যা অনাকাঙ্ক্ষিত। আমি খুঁজে পেতে পারে যে কোন সহজ সমাধান ছিল।

এই কোডটি আমি শেষ পর্যন্ত ব্যবহার করেছি:

if (is_bool($val)) $val ? $val = "true" : $val = "false";
else if ($val !== null) $val = (string)$val;

আপনি যদি পছন্দ করেন তবে সংক্ষিপ্ত এবং সহজ এবং সহজে কোনও ফাংশনে ফেলতে পারেন।


1

boolval()জটিল সারণীর জন্য কাজ করে যেখানে ভেরিয়েবলগুলি ঘোষণা করা এবং লুপ এবং ফিল্টার যুক্ত করা কাজ করে না। উদাহরণ:

$result[$row['name'] . "</td><td>" . (boolval($row['special_case']) ? 'True' : 'False') . "</td><td>" . $row['more_fields'] = $tmp

যেখানে $tmpঅর্ডার অন্য ডেটা স্থানান্তর করা হয় ব্যবহার করা একটি চাবিকাঠি। এখানে, আমি চেয়েছিলাম যে টেবিলটি "হ্যাঁ" 1 এর জন্য প্রদর্শিত হবে এবং 0 এর জন্য কিছুই নেই, তাই ব্যবহৃত (boolval($row['special_case']) ? 'Yes' : '')


1
কখন boolval(some_expression) ? .. : ..আলাদা আচরণ করে some_expression ? .. : ..?
নির্মাতা স্টিভ

1

এটি যে কোনও ধরণের মানের জন্যও কাজ করে:

$a = true;

echo $a                     // outputs:   1
echo value_To_String( $a )  // outputs:   true

কোড:

function valueToString( $value ){ 
    return ( !is_bool( $value ) ?  $value : ($value ? 'true' : 'false' )  ); 
}

1

@ সেবাস্তিয়ান-নোরের পরামর্শের ভিত্তিতে সম্পাদিত যা উল্লেখ করে যে $boolভেরিয়েবলটি সত্য 0বা হতে পারে 1। উদাহরণস্বরূপ, পিএইচপি-তে বুলিয়ান পরীক্ষার মাধ্যমে এটি চালানোর সময় 2সংশোধন করে true

একটি সমাধান হিসেবে আমি তা নিশ্চিত করার জন্য আমরা রূপান্তর ব্যবহৃত টাইপ ঢালাই আছে $boolকরতে 0বা 1
তবে আমাকে স্বীকার করতে হবে যে সহজ প্রকাশটি $bool ? 'true' : 'false'উপায় পরিষ্কার।

নীচে ব্যবহৃত আমার সমাধানটি কখনই ব্যবহার করা উচিত নয়, এলওএল।
এখানে কেন ...

পুনরাবৃত্তি এড়াতে, বুলিয়ানটির স্ট্রিং প্রতিনিধিত্ব সম্পন্ন অ্যারেটি একটি ধ্রুবক হিসাবে সংরক্ষণ করা যেতে পারে যা অ্যাপ্লিকেশন জুড়ে উপলব্ধ করা যায়।

// Make this constant available everywhere in the application
const BOOLEANS = ['true', 'false'];

$bool = true;
echo BOOLEANS[(bool)  $bool]; // 'true'
echo BOOLEANS[(bool) !$bool]; // 'false'

0

আমি গৃহীত উত্তরের অনুরাগী নই কারণ এটি যে "false"কোনও কিছুকে মূল্যায়ন করে যা মিথ্যাতে কোনও বুলিয়ান এবং ভিস-বিপরীতে রূপান্তর করে ।

যাইহোক এখানে আমার ওটিটি উত্তর, এটি var_exportফাংশনটি ব্যবহার করে ।

var_exportসমস্ত পরিবর্তনশীল প্রকারের সাথে কাজ করে ব্যতীত resource, আমি একটি ফাংশন তৈরি করেছি যা সরবরাহ করা আর্গুমেন্টের উপর নির্ভর করে স্ট্রিং ( (string)), একটি কড়া কাস্ট ( var_export) এবং টাইপ চেক করতে নিয়মিত অভিনয় করবে ..

if(!function_exists('to_string')){

    function to_string($var, $strict = false, $expectedtype = null){

        if(!func_num_args()){
            return trigger_error(__FUNCTION__ . '() expects at least 1 parameter, 0 given', E_USER_WARNING);
        }
        if($expectedtype !== null  && gettype($var) !== $expectedtype){
            return trigger_error(__FUNCTION__ . '() expects parameter 1 to be ' . $expectedtype .', ' . gettype($var) . ' given', E_USER_WARNING);
        }
        if(is_string($var)){
            return $var;
        }
        if($strict && !is_resource($var)){
            return var_export($var, true);
        }
        return (string) $var;
    }
}

if(!function_exists('bool_to_string')){

    function bool_to_string($var){
        return func_num_args() ? to_string($var, true, 'boolean') : to_string();        
    }
}

if(!function_exists('object_to_string')){

    function object_to_string($var){
        return func_num_args() ? to_string($var, true, 'object') : to_string();        
    }
}

if(!function_exists('array_to_string')){

    function array_to_string($var){
        return func_num_args() ? to_string($var, true, 'array') : to_string();        
    }
}

0
$converted_res = isset ( $res ) ? ( $res ? 'true' : 'false' ) : 'false';

issetএখানে প্রয়োজনীয় নয়। পিএইচপি-তে, if-স্টেস্ট উভয়ের পক্ষে মিথ্যা nullএবং variable not defined$converted_res = ( $res ? 'true' : 'false' );পুরানো উত্তরে দেখা হিসাবে সহজভাবে করতে পারেন ।
টুলমেকারস্টেভ

0
function ToStr($Val=null,$T=0){

    return is_string($Val)?"$Val"
    :
    (
        is_numeric($Val)?($T?"$Val":$Val)
        :
        (
            is_null($Val)?"NULL"
            :
            (
                is_bool($Val)?($Val?"TRUE":"FALSE")
                :
                (
                    is_array($Val)?@StrArr($Val,$T)
                    :
                    false
                )
            )
        )
    );

}
function StrArr($Arr,$T=0)
{
    $Str="";
    $i=-1;
    if(is_array($Arr))
    foreach($Arr AS $K => $V)
    $Str.=((++$i)?", ":null).(is_string($K)?"\"$K\"":$K)." => ".(is_string($V)?"\"$V\"":@ToStr($V,$T+1));
    return "array( ".($i?@ToStr($Arr):$Str)." )".($T?null:";");
}

$A = array(1,2,array('a'=>'b'),array('a','b','c'),true,false,ToStr(100));
echo StrArr($A); // OR ToStr($A) // OR ToStr(true) // OR StrArr(true)

-2

কেবলমাত্র আপডেট করতে চেয়েছিলেন, পিএইচপি> = 5.50 এ আপনি boolval()একই জিনিসটি করতে পারেন

এখানে রেফারেন্স


3
এটি ব্যবহার করার মতোই(bool) $var;
আল.জি.

ধন্যবাদ! এটি আমার পক্ষে জটিল টেবিলে কাজ করেছিল। এটি এর মতো ব্যবহার করেছেন:"<td>" . (boolval($row['special_case']) ? 'Yes' : ' ') . "</td>"
মোটরবাবি

4
boolval()অন্য যেভাবে যায়, যে কোনও ধরণের ভেরিয়েবলকে বিলে রূপান্তরিত করে, বুলকে স্ট্রিংয়ে রূপান্তরিত করে না।
মাইক চেম্বারলাইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.