Bagaimana saya bisa mengkonversi string boolean
?
$string = 'false';
$test_mode_mail = settype($string, 'boolean');
var_dump($test_mode_mail);
if($test_mode_mail) echo 'test mode is on.';
ia kembali,
boolean benar
tapi seharusnya begitu boolean false
.
!!$string1
akan mengembalikan indikasi boolean dari string yang diuraikan dalam jawaban teratas.Jawaban:
String selalu mengevaluasi ke boolean true kecuali mereka memiliki nilai yang dianggap "kosong" oleh PHP (diambil dari dokumentasi untuk
empty
):""
(string kosong);"0"
(0 sebagai string)Jika Anda perlu menetapkan boolean berdasarkan nilai teks dari suatu string, maka Anda harus memeriksa keberadaan atau nilai tersebut.
EDIT: kode di atas dimaksudkan untuk kejelasan pemahaman. Dalam penggunaan aktual, kode berikut mungkin lebih sesuai:
atau mungkin penggunaan
filter_var
fungsi dapat mencakup lebih banyak nilai boolean:filter_var
mencakup seluruh rentang nilai, termasuk nilai-nilai truthy"true"
,"1"
,"yes"
dan"on"
. Lihat di sini untuk detail lebih lanjut.sumber
$string === 'true'
filter_var($string, FILTER_VALIDATE_BOOLEAN);
apakah itu hal yang baik?Metode ini diposting oleh @ lauthiamkok di komentar. Saya mempostingnya di sini sebagai jawaban untuk lebih memperhatikannya.
Tergantung pada kebutuhan Anda, Anda harus mempertimbangkan menggunakan
filter_var()
denganFILTER_VALIDATE_BOOLEAN
bendera.sumber
filter_var($answer, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
bekerja lebih baik untuk saya. Lihat php.net/manual/en/function.filter-var.php#121263String
"false"
sebenarnya dianggap sebagai"TRUE"
nilai oleh PHP. Dokumentasi mengatakan:jadi jika Anda melakukannya:
atau
dalam kedua kasus
$bool
akanTRUE
. Jadi, Anda harus melakukannya secara manual, seperti yang disarankan GordonM.sumber
Ketika bekerja dengan JSON, saya harus mengirim nilai Boolean via
$_POST
. Saya memiliki masalah yang sama ketika saya melakukan sesuatu seperti:Dalam kode di atas, Boolean saya dikonversi menjadi string JSON.
Untuk mengatasinya, Anda dapat mendekode string menggunakan
json_decode()
:(Ini biasanya bekerja dengan nilai Boolean yang dikonversi ke string dan dikirim ke server juga dengan cara lain, yaitu, selain menggunakan JSON.)
sumber
Anda dapat menggunakan json_decode untuk memecahkan kode boolean itu
sumber
Ini menangani semua kemungkinan varian
$string
sumber
on
danoff
?Jika variabel "boolean" Anda berasal dari array global seperti $ _POST dan $ _GET, Anda dapat menggunakan
filter_input()
fungsi filter.Contoh untuk POST:
Jika variabel "boolean" Anda berasal dari sumber lain, Anda dapat menggunakan
filter_var()
fungsi filter.Contoh:
sumber
Kamu bisa memakai
boolval($strValue)
Contoh:
Dokumentasi http://php.net/manual/es/function.boolval.php
sumber
echo boolval('false');
=> 1echo (int)'false;
atauecho intval('false');
(int)'true'
danintval('true')
keduanya kembali 0 juga (semua string lakukan)hal termudah untuk dilakukan adalah ini:
Melakukannya dengan cara ini, Anda dapat mengulangi serangkaian 'benar', 'BENAR', 'salah' atau 'SALAH' dan mendapatkan nilai string ke boolean.
sumber
Jawaban lain terlalu rumit. Pertanyaan ini hanyalah pertanyaan logis . Dapatkan pernyataan Anda dengan benar.
Sekarang jawaban Anda akan baik
false
, jika string itu'false'
,true
, jika string Anda'true'
.Saya harus perhatikan bahwa
filter_var( $boolString, FILTER_VALIDATE_BOOLEAN );
masih akan menjadi pilihan yang lebih baik jika Anda perlu memiliki string sepertion/yes/1
sebagai alias untuktrue
.sumber
atau
sumber
Anda harus menentukan
jika tidak, Anda akan selalu salah meskipun $ string berisi sesuatu yang lain.sumber
Anda dapat menggunakan metode settype juga!
SetType ($ var, "Boolean") Echo $ var // lihat 0 atau 1
sumber
Saya melakukannya dengan cara yang akan membuang versi case case dari "false" yang tidak sensitif ke boolean FALSE, tetapi akan berperilaku menggunakan aturan casting php normal untuk semua string lainnya. Saya pikir ini adalah cara terbaik untuk mencegah perilaku yang tidak terduga.
Atau sebagai fungsi:
sumber
Jawaban oleh @GordonM bagus. Tetapi akan gagal jika
$string
sudahtrue
(yaitu, string bukan string tetapi boolean BENAR) ... yang tampaknya tidak logis.Memperluas jawabannya, saya akan menggunakan:
sumber
Saya semakin bingung dengan atribut shortcode wordpress, saya memutuskan untuk menulis fungsi kustom untuk menangani semua kemungkinan. mungkin bermanfaat bagi seseorang:
sumber
Cara sederhana adalah dengan memeriksa terhadap array nilai yang Anda anggap benar.
sumber
Diedit untuk menunjukkan kemungkinan yang tidak disebutkan di sini, karena jawaban asli saya jauh dari terkait dengan pertanyaan OP.
preg_match (); Apakah mungkin untuk digunakan. Namun, dalam sebagian besar aplikasi akan jauh lebih berat untuk digunakan daripada jawaban lain di sini.
/(?:true)|(?:1)/i
Dapat juga digunakan jika diperlukan dalam situasi tertentu. Itu tidak akan kembali dengan benar ketika mengevaluasi string yang mengandung "false" dan "1".sumber
Di PHP Anda cukup mengonversi nilai menjadi boolean dengan menggunakan operator ganda bukan (
!!
):sumber
Anda harus dapat menggunakan boolean menggunakan (bool) tapi saya tidak yakin tanpa memeriksa apakah ini bekerja pada string "true" dan "false".
Ini mungkin layak dicoba
Perlu diketahui bahwa yang berikut ini akan mengevaluasi ke boolean False ketika dimasukkan ke dalam
Semua hal lain akan dinilai benar.
Seperti yang dijelaskan di sini: http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting
sumber
"false"
menjaditrue
.$myBool = (bool)"False"; if ($myBool) { echo "true"; }