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


318

আমি স্ট্রিংকে কীভাবে রূপান্তর করতে পারি boolean?

$string = 'false';

$test_mode_mail = settype($string, 'boolean');

var_dump($test_mode_mail);

if($test_mode_mail) echo 'test mode is on.';

এটি ফিরে আসে,

বুলিয়ান সত্য

তবে তা হওয়া উচিত boolean false


কেন কেউ = বুল = !! $ স্ট্রিং 1 সম্পর্কে উত্তর দিয়েছে?
zloctb

1
@ zloctb কারণ এটি প্রশ্নের উত্তর দেয় না। !!$string1উপরে রেট করা উত্তরে বর্ণিত স্ট্রিংয়ের একটি বুলিয়ান সূচক ফেরত দেবে।
ডেভিড বার্কার

উত্তর:


347

স্ট্রিংগুলি সর্বদা বুলিয়ান সত্য হিসাবে মূল্যায়ন করে যদি না তাদের কাছে পিএইচপি দ্বারা "খালি" হিসাবে বিবেচিত এমন কোনও মান থাকে (যার জন্য ডকুমেন্টেশনempty থেকে নেওয়া হয় ):

  1. "" (একটি খালি স্ট্রিং);
  2. "0" (0 স্ট্রিং হিসাবে)

যদি আপনার কোনও স্ট্রিংয়ের পাঠ্য মানের ভিত্তিতে বুলিয়ান সেট করতে হয়, তবে আপনাকে উপস্থিতি বা অন্য কোনও মানটি পরীক্ষা করতে হবে।

$test_mode_mail = $string === 'true'? true: false;

সম্পাদনা: উপরের কোডটি বোঝার স্বচ্ছতার জন্য is প্রকৃত ব্যবহারে নিম্নলিখিত কোডটি আরও উপযুক্ত হতে পারে:

$test_mode_mail = ($string === 'true');

অথবা হয়ত filter_varফাংশনটির ব্যবহার আরও বুলিয়ান মানগুলি কভার করতে পারে:

filter_var($string, FILTER_VALIDATE_BOOLEAN);

filter_varমান একটি সম্পূর্ণ পরিসীমা, truthy মান সহ জুড়ে "true", "1", "yes"এবং "on"। দেখুন এখানে আরো বিস্তারিত জানার জন্য।


5
আপনি কী করছেন তা যদি নিশ্চিত না হন তবে আমি সর্বদা কঠোর তুলনা ব্যবহার করার পরামর্শ দিই:$string === 'true'
জ্নারকাস

248
আমি এটি খুঁজে পেয়েছি - filter_var($string, FILTER_VALIDATE_BOOLEAN);এটা কি ভাল জিনিস?
laukok

10
টেরিনারি প্রয়োজনীয় বলে মনে হচ্ছে না। কেন কেবলমাত্র $ টেস্ট_মোড_মেলকে অসমতার মান নির্ধারণ করবেন না? $ টেস্ট_মোড_মেল = $ স্ট্রিং === 'সত্য'
টিম ব্যাংক

3
তবে 1/0, সত্য / মিথ্যা সম্পর্কে কী? আমার কাছে মনে হয় @ লাওথিয়ামককের উত্তরটি সবচেয়ে ভাল।
ryabenko-pro

1
@ ফিলিপটাইদেও আমি এই বিষয়ে কথা বলছি যে পিএইচপি কীভাবে বুলিয়ান অপারেশনের ক্ষেত্রে স্ট্রিংকে মূল্যায়ন করে, আমি কখনই ইভাল () উল্লেখ করিনি এবং আমি কোনও পরিস্থিতিতে এটি ব্যবহার করার পরামর্শ দিইনি। স্ট্রিং "(3 <5)" পিএইচপি দ্বারা বুলিয়ান সত্য হিসাবে মূল্যায়ন করা হবে কারণ এটি খালি নেই।
গর্ডনএম

647

এই পদ্ধতিটি মন্তব্যগুলিতে @lauthiamkok পোস্ট করেছেন। আমি এটির দিকে আরও মনোযোগ দেওয়ার জন্য উত্তর হিসাবে এখানে পোস্ট করছি।

আপনার প্রয়োজনের উপর নির্ভর করে, আপনি ব্যবহার বিবেচনা করা উচিত filter_var()সঙ্গে FILTER_VALIDATE_BOOLEANপতাকা।

filter_var(    true, FILTER_VALIDATE_BOOLEAN); // true
filter_var(    'true', FILTER_VALIDATE_BOOLEAN); // true
filter_var(         1, FILTER_VALIDATE_BOOLEAN); // true
filter_var(       '1', FILTER_VALIDATE_BOOLEAN); // true
filter_var(      'on', FILTER_VALIDATE_BOOLEAN); // true
filter_var(     'yes', FILTER_VALIDATE_BOOLEAN); // true

filter_var(   false, FILTER_VALIDATE_BOOLEAN); // false
filter_var(   'false', FILTER_VALIDATE_BOOLEAN); // false
filter_var(         0, FILTER_VALIDATE_BOOLEAN); // false
filter_var(       '0', FILTER_VALIDATE_BOOLEAN); // false
filter_var(     'off', FILTER_VALIDATE_BOOLEAN); // false
filter_var(      'no', FILTER_VALIDATE_BOOLEAN); // false
filter_var('asdfasdf', FILTER_VALIDATE_BOOLEAN); // false
filter_var(        '', FILTER_VALIDATE_BOOLEAN); // false
filter_var(      null, FILTER_VALIDATE_BOOLEAN); // false

5
ডকুমেন্টেশন অনুসারে, এই ফাংশনটি পিএইচপি 5> = 5.2.0 এর জন্য উপলব্ধ। php.net/manual/en/function.filter-var.php
Westy92

4
আমি সত্যই মিথ্যা, অন, 0, ইত্যাদির মতো মান রয়েছে এমন ওয়ার্ডপ্রেস শর্টকোড বৈশিষ্ট্যের উপর ভিত্তি করে বুলিয়ান সেট করার জন্য এই সমাধানটি সত্যিই পছন্দ করি answer
অ্যান্ডি ওয়ারেন

11
filter_var($answer, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)আমার জন্য আরও ভাল কাজ। দেখুন php.net/manual/en/function.filter-var.php#121263
রায়ান

!! গুরুত্বপূর্ণ তথ্য !! যদি ফিল্টার ব্যর্থ হয় তবে ফিল্টার_ভারও মিথ্যা ফিরিয়ে দেয়। এটি কিছু সমস্যা তৈরি করতে পারে।
এএফএ মেড

35

স্ট্রিংটি "false" আসলে "TRUE"পিএইচপি দ্বারা একটি মান হিসাবে বিবেচিত হয়। নথি বলছে:

স্পষ্টরূপে কোনও মানকে বুলেয়ানে রূপান্তর করতে, (বুল) বা (বুলিয়ান) কাস্ট ব্যবহার করুন। তবে বেশিরভাগ ক্ষেত্রে castালাই অপ্রয়োজনীয়, যেহেতু কোনও অপারেটর, ফাংশন বা নিয়ন্ত্রণ কাঠামোর কোনও বুলিয়ান আর্গুমেন্টের প্রয়োজন হলে মানটি স্বয়ংক্রিয়ভাবে রূপান্তরিত হয়।

টাইপ জাগলিংও দেখুন।

বুলিয়ান রূপান্তর করার সময়, নিম্নলিখিত মানগুলি মিথ্যা হিসাবে বিবেচনা করা হয়:

  • বুলিয়ান মিথ্যা নিজেই

  • পূর্ণসংখ্যা 0 (শূন্য)

  • ভাসা 0.0 (শূন্য)

  • খালি স্ট্রিং, এবং স্ট্রিং "0"

  • শূন্য উপাদান সহ একটি অ্যারে

  • শূন্য সদস্য ভেরিয়েবলযুক্ত একটি বস্তু (কেবল পিএইচপি 4)

  • বিশেষ ধরণের NULL (আনসেট ভেরিয়েবল সহ)

  • সিম্পল এক্সএমএল অবজেক্ট খালি ট্যাগ থেকে তৈরি

অন্যান্য প্রতিটি মান সত্য বলে বিবেচিত হয় (কোনও সংস্থান সহ)।

সুতরাং আপনি যদি:

$bool = (boolean)"False";

অথবা

$test = "false";
$bool = settype($test, 'boolean');

উভয় ক্ষেত্রে $boolহবে TRUE। সুতরাং আপনাকে এটি ম্যানুয়ালি করতে হবে, যেমন গর্ডনএম প্রস্তাব দেয়।


1
অবশ্যই, নীচেরটি অবশ্যই মিথ্যা প্রত্যাবর্তন করবে। আসলে, এটি একটি মারাত্মক নিক্ষেপ করে :) :) "মারাত্মক ত্রুটি: কেবলমাত্র পরিবর্তনশীলগুলি রেফারেন্স দ্বারা পাস করা যায়"। $ a = 'মিথ্যা'; settype ($ একটি, 'বুলিয়ান'); , var_dump ($ ক); সত্যই মিথ্যা ফিরে আসবে।
রব

16

JSON এর সাথে কাজ করার সময়, আমাকে একটি বুলিয়ান মান পাঠাতে হয়েছিল $_POST। আমি যখন এমন কিছু করি তখন আমারও একই সমস্যা ছিল:

if ( $_POST['myVar'] == true) {
    // do stuff;
}

উপরের কোডে, আমার বুলিয়ান একটি JSON স্ট্রিংয়ে রূপান্তরিত হয়েছিল।

এটি থেকে উত্তরণের জন্য, আপনি স্ট্রিংটি ডিকোড করতে পারেন json_decode():

//assume that : $_POST['myVar'] = 'true';
 if( json_decode('true') == true ) { //do your stuff; }

(এটি সাধারণত বুলিয়ান মানগুলিকে স্ট্রিংয়ে রূপান্তরিত করে সার্ভারে প্রেরণ করা হয়, যেমনটি জেএসওএন ব্যবহার করা ব্যতীত অন্যরকম দিয়েও কাজ করা উচিত))


11

আপনি যে বুলিয়ান ডিকোড করতে json_decode ব্যবহার করতে পারেন

$string = 'false';
$boolean = json_decode($string);
if($boolean) {
  // Do something
} else {
  //Do something else
}

প্রদত্ত স্ট্রিংটি একটি পূর্ণসংখ্যা হলে json_decode এছাড়াও পূর্ণসংখ্যায় রূপান্তরিত হবে
মিহাই রৌডাকানু

1
হ্যাঁ, এটি সত্য, তবে এর উল্লেখ রয়েছে যে স্ট্রিংটি বুলিয়ান মান রাখে
souparno majumder

8
(boolean)json_decode(strtolower($string))

এটি সমস্ত সম্ভাব্য রূপগুলি পরিচালনা করে $string

'true'  => true
'True'  => true
'1'     => true
'false' => false
'False' => false
'0'     => false
'foo'   => false
''      => false

কি onএবং off?
সাইক্লোনকোড

7

যদি আপনার "বুলিয়ান" পরিবর্তনশীল global _POST এবং $ _GET এর মতো কোনও বিশ্বব্যাপী অ্যারে থেকে আসে তবে আপনি filter_input()ফিল্টার ফাংশন ব্যবহার করতে পারেন ।

পোস্টের উদাহরণ:

$isSleeping  = filter_input(INPUT_POST, 'is_sleeping',  FILTER_VALIDATE_BOOLEAN);

যদি আপনার "বুলিয়ান" পরিবর্তনশীল অন্য উত্স থেকে আসে আপনি filter_var()ফিল্টার ফাংশন ব্যবহার করতে পারেন ।

উদাহরণ:

filter_var('true', FILTER_VALIDATE_BOOLEAN); // true

7

তুমি ব্যবহার করতে পার boolval($strValue)

উদাহরণ:

<?php
echo '0:        '.(boolval(0) ? 'true' : 'false')."\n";
echo '42:       '.(boolval(42) ? 'true' : 'false')."\n";
echo '0.0:      '.(boolval(0.0) ? 'true' : 'false')."\n";
echo '4.2:      '.(boolval(4.2) ? 'true' : 'false')."\n";
echo '"":       '.(boolval("") ? 'true' : 'false')."\n";
echo '"string": '.(boolval("string") ? 'true' : 'false')."\n";
echo '"0":      '.(boolval("0") ? 'true' : 'false')."\n";
echo '"1":      '.(boolval("1") ? 'true' : 'false')."\n";
echo '[1, 2]:   '.(boolval([1, 2]) ? 'true' : 'false')."\n";
echo '[]:       '.(boolval([]) ? 'true' : 'false')."\n";
echo 'stdClass: '.(boolval(new stdClass) ? 'true' : 'false')."\n";
?>

ডকুমেন্টেশন http://php.net/manual/es/function.boolval.php


2
echo boolval('false');=> 1
মুবাশার

আপনি echo (int)'false;বা ব্যবহার করতে পারেনecho intval('false');
anayarojo

@ অনায়রোজো (int)'true'এবং intval('true')উভয়ই 0 আবার ফিরে আসে (সমস্ত স্ট্রিং করে)
স্কেচিটেক

4

সবচেয়ে সহজ কাজটি হ'ল:

$str = 'TRUE';

$boolean = strtolower($str) == 'true' ? true : false;

var_dump($boolean);

এটি এইভাবে করাতে আপনি 'সত্য', 'সত্য', 'মিথ্যা' বা 'মিথ্যা' সিরিজের মধ্য দিয়ে লুপ করতে পারেন এবং একটি বুলিয়ানকে স্ট্রিংয়ের মান পেতে পারেন।


3

অন্যান্য উত্তর জটিল জিনিস শেষ। এই প্রশ্নটি কেবল যুক্তিযুক্ত প্রশ্ন। ঠিক আপনার বক্তব্য ঠিক আছে।

$boolString = 'false';
$result = 'true' === $boolString;

এখন আপনার উত্তর হয় হয়

  • false, যদি স্ট্রিংটি ছিল 'false',
  • বা true, যদি আপনার স্ট্রিংটি ছিল 'true'

আমি মনে রাখবেন যে আছে filter_var( $boolString, FILTER_VALIDATE_BOOLEAN );এখনও একটি ভালো বিকল্প হতে হবে যদি তোমার মত স্ট্রিং থাকতে হবে on/yes/1ওরফে হিসেবে true


3
function stringToBool($string){
    return ( mb_strtoupper( trim( $string)) === mb_strtoupper ("true")) ? TRUE : FALSE;
}

অথবা

function stringToBool($string) {
    return filter_var($string, FILTER_VALIDATE_BOOLEAN);
}

3
filter_var($string, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);

$string = 1; // true
$string ='1'; // true
$string = 'true'; // true
$string = 'trUe'; // true
$string = 'TRUE'; // true
$string = 0; // false
$string = '0'; // false
$string = 'false'; // false
$string = 'False'; // false
$string = 'FALSE'; // false
$string = 'sgffgfdg'; // null

আপনাকে অবশ্যই উল্লেখ করতে হবে

FILTER_NULL_ON_FAILURE
অন্যথায় আপনি স্ট্রিংটিতে অন্য কিছু রয়েছে এমনকি থাকলে আপনি সর্বদা মিথ্যা হয়ে যাবেন।


2

আপনি সেটটাইপ পদ্ধতিটিও ব্যবহার করতে পারেন!

সেটটাইপ ($ var, "বুলিয়ান") প্রতিধ্বনি $ var // দেখুন 0 বা 1


2

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

$test_var = 'False';
$test_var = strtolower(trim($test_var)) == 'false' ? FALSE : $test_var;
$result = (boolean) $test_var;

বা একটি ফাংশন হিসাবে:

function safeBool($test_var){
    $test_var = strtolower(trim($test_var)) == 'false' ? FALSE : $test_var;
    return (boolean) $test_var;
}

2

@ গর্ডনএম এর উত্তর ভাল। তবে এটি ব্যর্থ হবে যদি $stringইতিমধ্যে true(যেমন, স্ট্রিংটি স্ট্রিং নয় তবে বুলিয়ান সত্য) ... যা অযৌক্তিক বলে মনে হয়।

তার উত্তর প্রসারিত করে, আমি ব্যবহার করব:

$test_mode_mail = ($string === 'true' OR $string === true));

0

আমি ওয়ার্ডপ্রেস শর্টকোড বৈশিষ্ট্যগুলির সাথে বিভ্রান্ত হচ্ছিলাম, আমি সমস্ত সম্ভাবনাগুলি পরিচালনা করার জন্য একটি কাস্টম ফাংশন লেখার সিদ্ধান্ত নিয়েছি। এটি কারও পক্ষে উপকারী:

function stringToBool($str){
    if($str === 'true' || $str === 'TRUE' || $str === 'True' || $str === 'on' || $str === 'On' || $str === 'ON'){
        $str = true;
    }else{
        $str = false;
    }
    return $str;
}
stringToBool($atts['onOrNot']);

1
আমি প্রথমে সাহায্যের সন্ধান করছিলাম, তবে আমি আশা করি তেমন সহজ কিছু পাইনি। সেজন্য আমি আমার নিজের ফাংশনটি লিখেছি। এটি বিনামূল্যে নির্দ্বিধায়।
টোমি

-1

একটি সহজ উপায় হ'ল মূল্যগুলির অ্যারে বিরুদ্ধে পরীক্ষা করা যা আপনি সত্য বলে মনে করেন।

$wannabebool = "false";
$isTrue = ["true",1,"yes","ok","wahr"];
$bool = in_array(strtolower($wannabebool),$isTrue);

-1

এখানে সম্ভাব্য উল্লেখ না করার জন্য সম্পাদিত, কারণ আমার আসল উত্তরটি ওপি-র প্রশ্নের সাথে সম্পর্কিত নয়।

preg_match (); ব্যবহার করা সম্ভব। তবে বেশিরভাগ অ্যাপ্লিকেশনগুলিতে এটি অন্যান্য উত্তরগুলির তুলনায় ব্যবহার করা অনেক বেশি ভারী হবে।

if (preg_match("/true/i", "true PHP is a web scripting language of choice.")) {
    echo "<br><br>Returned true";
} else {
    echo "<br><br>Returned False";
}

/(?:true)|(?:1)/iনির্দিষ্ট পরিস্থিতিতে প্রয়োজনে ব্যবহার করা যেতে পারে। "মিথ্যা" এবং "1" উভয় সমন্বিত একটি স্ট্রিং মূল্যায়ন করলে এটি সঠিকভাবে ফিরে আসবে না।


এটি জিজ্ঞাসা করা হয় না। প্রশ্নটি কীভাবে একটি স্ট্রিংকে বুলিয়ান রূপান্তর করতে পারে।
mrded

mrded: আমি ক্ষমা চাইছি প্রশ্নটি ভুলভাবে পড়েছি। স্পিরিটের ভাল ফর্মে আমি এখানে উল্লেখ না করে আরও একটি সম্ভাবনা যুক্ত করব।
জেএসজি

-1

পিএইচপি-তে আপনি কেবল ডাবল নট অপারেটর ( !!) ব্যবহার করে একটি মানকে বুলিয়ানে রূপান্তর করতে পারেন :

var_dump(!! true);     // true
var_dump(!! "Hello");  // true
var_dump(!! 1);        // true
var_dump(!! [1, 2]);   // true
var_dump(!! false);    // false
var_dump(!! null);     // false
var_dump(!! []);       // false
var_dump(!! 0);        // false
var_dump(!! '');       // false

-4

আপনি (বুল) ব্যবহার করে বুলিয়ানে কাস্ট করতে সক্ষম হবেন তবে এটি "সত্য" এবং "মিথ্যা" স্ট্রিংগুলিতে কাজ করে কিনা তা যাচাই করা ছাড়া আমি নিশ্চিত নই।

এটি একটি পপ যদিও মূল্য হতে পারে

$myBool = (bool)"False"; 

if ($myBool) {
    //do something
}

এটি জেনে রাখা উচিত যে নীচেরগুলি ভিতরে putোকানোর সময় বুলিয়ান ফালসের মূল্যায়ন করবে

if()
  • বুলিয়ান মিথ্যা নিজেই
  • পূর্ণসংখ্যা 0 (শূন্য)
  • ভাসা 0.0 (শূন্য)
  • খালি স্ট্রিং, এবং স্ট্রিং "0"
  • শূন্য উপাদান সহ একটি অ্যারে
  • শূন্য সদস্য ভেরিয়েবলযুক্ত একটি বস্তু (কেবল পিএইচপি 4)
  • বিশেষ ধরণের NULL (আনসেট ভেরিয়েবল সহ)
  • সিম্পল এক্সএমএল অবজেক্ট খালি ট্যাগ থেকে তৈরি

অন্য সমস্ত কিছু সত্যের মূল্যায়ন করবে।

হিসাবে এখানে বোঝানোর: http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting


6
আপনার প্রথম অনুচ্ছেদে অনুমানের জবাবে: বুলিয়ানকে একটি স্পষ্ট কাস্ট ব্যবহার করা রূপান্তরিত "false"হবে true
মার্ক আমেরিকা

2
এটি "সত্য" মুদ্রণ করবে$myBool = (bool)"False"; if ($myBool) { echo "true"; }
এসএসএইচ এটি

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