PHP - periksa apakah variabel tidak ditentukan

92

Pertimbangkan pernyataan jquery ini

isTouch = document.createTouch !== undefined

Saya ingin tahu apakah kami memiliki pernyataan serupa di PHP, bukan isset () tetapi secara harfiah memeriksa nilai yang tidak ditentukan, seperti:

$isTouch != ""

Apakah ada yang mirip seperti di atas di PHP?

Timothy Coetzee
sumber

Jawaban:

171

Kamu dapat memakai -

$isTouch = isset($variable);

Ini akan kembali truejika $variablesudah ditentukan. jika variabel tidak didefinisikan maka akan kembali false.

Catatan: Mengembalikan TRUE jika var ada dan memiliki nilai selain NULL, FALSE sebaliknya.

Jika Anda ingin memeriksa false, 0dll. Anda kemudian dapat menggunakan empty()-

$isTouch = empty($variable);

empty() bekerja untuk -

  • "" (string kosong)
  • 0 (0 sebagai bilangan bulat)
  • 0,0 (0 sebagai pelampung)
  • "0" (0 sebagai string)
  • BATAL
  • SALAH
  • array () (array kosong)
  • $ var; (variabel dideklarasikan, tetapi tanpa nilai)
Sougata Bose
sumber
2
isset()selalu mengembalikan bool.
VeeeneX
Apakah boolean cast diperlukan? isset (...) sudah mengembalikan bool kan?
Cr3aHal0
1
Tidak. Itu kembali trueatau false. Jadi tidak perlu casting itu.
Sougata Bose
1
Anda juga bisa melakukan ini dengan menggunakan empty()yang akan mengembalikan false jika itu adalah string kosong. isset()akan mengembalikan nilai true jika itu adalah string kosong, juga kosong melakukan pemeriksaan isset secara internal.
mic
1
Anda juga bisa melakukan ini: $isTouch = (bool) $variable;yang akan melakukan hal yang sama isset()dan mungkin sedikit lebih baik karena akan berfungsi seperti ini empty().
mic
20

Cara lain cukup:

if($test){
    echo "Yes 1";
}
if(!is_null($test)){
    echo "Yes 2";
}

$test = "hello";

if($test){
    echo "Yes 3";
}

Akan kembali :

"Yes 3"

Cara terbaik adalah dengan menggunakan isset (), jika tidak, Anda bisa mendapatkan error seperti "undefined $ test".

Anda bisa melakukannya seperti ini:

if( isset($test) && ($test!==null) )

Anda tidak akan mengalami kesalahan apa pun karena ketentuan pertama tidak diterima.

TiDJ
sumber
Jika kita menggunakan $test!==nulltanpa tanda kurung, lalu apa yang akan terjadi? Akankah itu memberi kesalahan?
Vir
Tidak, tidak apa-apa juga.
TiDJ
7

Untuk memeriksa apakah variabel sudah disetel, Anda perlu menggunakan fungsi isset.

$lorem = 'potato';

if(isset($lorem)){
    echo 'isset true' . '<br />';
}else{
    echo 'isset false' . '<br />';
}

if(isset($ipsum)){
    echo 'isset true' . '<br />';
}else{
    echo 'isset false' . '<br />';
}

kode ini akan mencetak:

isset true
isset false

baca lebih lanjut di https://php.net/manual/en/function.isset.php

ErasmoOliveira
sumber
6

Kamu dapat memakai -

Operator ternary untuk memeriksa apakah nilai yang ditetapkan oleh POST / GET atau tidak seperti ini

$value1 = $_POST['value1'] = isset($_POST['value1']) ? $_POST['value1'] : '';
$value2 = $_POST['value2'] = isset($_POST['value2']) ? $_POST['value2'] : '';
$value3 = $_POST['value3'] = isset($_POST['value3']) ? $_POST['value3'] : '';
$value4 = $_POST['value4'] = isset($_POST['value4']) ? $_POST['value4'] : '';
Sumit Thakur
sumber
3

JavaScript ini 'ketat tidak sama' operator ( !==perbandingan dengan) undefinedtidak tidak menghasilkan falsepada nullnilai-nilai.

var createTouch = null;
isTouch = createTouch !== undefined  // true

Untuk mencapai perilaku yang setara di PHP, Anda dapat memeriksa apakah nama variabel ada di kunci hasil get_defined_vars().

// just to simplify output format
const BR = '<br>' . PHP_EOL;

// set a global variable to test independence in local scope
$test = 1;

// test in local scope (what is working in global scope as well)
function test()
{
  // is global variable found?
  echo '$test ' . ( array_key_exists('test', get_defined_vars())
                    ? 'exists.' : 'does not exist.' ) . BR;
  // $test does not exist.

  // is local variable found?
  $test = null;
  echo '$test ' . ( array_key_exists('test', get_defined_vars())
                    ? 'exists.' : 'does not exist.' ) . BR;
  // $test exists.

  // try same non-null variable value as globally defined as well
  $test = 1;
  echo '$test ' . ( array_key_exists('test', get_defined_vars())
                    ? 'exists.' : 'does not exist.' ) . BR;
  // $test exists.

  // repeat test after variable is unset
  unset($test);
  echo '$test ' . ( array_key_exists('test', get_defined_vars())
                    ? 'exists.' : 'does not exist.') . BR;
  // $test does not exist.
}

test();

Dalam banyak kasus, isset($variable)itu sesuai. Itu setara dengan array_key_exists('variable', get_defined_vars()) && null !== $variable. Jika Anda hanya menggunakan null !== $variabletanpa prechecking keberadaan, Anda akan mengacaukan log Anda dengan peringatan karena itu merupakan upaya untuk membaca nilai variabel yang tidak ditentukan.

Namun, Anda dapat menerapkan variabel yang tidak ditentukan ke referensi tanpa peringatan apa pun:

// write our own isset() function
function my_isset(&$var)
{
  // here $var is defined
  // and initialized to null if the given argument was not defined
  return null === $var;
}

// passing an undefined variable by reference does not log any warning
$is_set = my_isset($undefined_variable);   // $is_set is false
Klon Quasimodo
sumber
1

Anda dapat menggunakan fungsi PHP isset () untuk menguji apakah suatu variabel disetel atau tidak. The isset () akan kembali FALSE jika pengujian variabel yang telah ditetapkan untuk NULL. Contoh:

<?php
    $var1 = '';
    if(isset($var1)){
        echo 'This line is printed, because the $var1 is set.';
    }
?>

Kode ini akan menampilkan "Baris ini dicetak, karena $ var1 disetel."

baca lebih lanjut di https://stackhowto.com/how-to-check-if-a-variable-is-undefined-in-php/

thomas
sumber
0
if(isset($variable)){
    $isTouch = $variable;
}

ATAU

if(!isset($variable)){
    $isTouch = "";// 
}
Waruna Manjula
sumber