PHP - değişkenin tanımsız olup olmadığını kontrol edin


92

Bu jquery ifadesini düşünün

isTouch = document.createTouch !== undefined

PHP'de isset () olmamakla birlikte tam anlamıyla tanımlanmamış bir değeri kontrol eden benzer bir ifademiz olup olmadığını bilmek istiyorum, şöyle bir şey:

$isTouch != ""

PHP'de yukarıdakine benzer bir şey var mı?


Yanıtlar:


171

Kullanabilirsiniz -

$isTouch = isset($variable);

Bu dönecektir trueeğer $variabletanımlanır. değişken tanımlı değilse geri dönecektir false.

Not: var varsa ve NULL dışında bir değere sahipse TRUE, aksi takdirde FALSE döndürür.

Kontrol etmek isterseniz false, 0vb. Daha sonra kullanabilirsiniz empty()-

$isTouch = empty($variable);

empty() için çalışıyor -

  • "" (boş bir dize)
  • 0 (tam sayı olarak 0)
  • 0.0 (0 yüzdürme olarak)
  • "0" (dize olarak 0)
  • BOŞ
  • YANLIŞ
  • array () (boş bir dizi)
  • $ var; (bir değişken bildirildi, ancak değeri yok)

2
isset()her zaman bool döndürür.
VeeeneX

Boole döküm gerekli mi? isset (...) zaten bool'u döndürüyor değil mi?
Cr3aHal0

1
Hayır . Dönüyor trueya da false. Yani oyuncu kadrosuna gerek yok.
Sougata Bose

1
empty()bunu, boş bir dizge ise false döndüren öğesini kullanarak da yapabilirsiniz . isset()boş bir dizge ise true döndürür, ayrıca boş dahili olarak bir isset kontrolü yapar.
mikrofon

1
Bunu da yapabilirsiniz: $isTouch = (bool) $variable;bu aynı şeyi yapacak isset()ve belki biraz daha iyi çalışacağı için biraz daha iyi empty().
mikrofon

20

Başka bir yol da basitçe:

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

$test = "hello";

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

Dönecek :

"Yes 3"

En iyi yol isset () kullanmaktır, aksi takdirde "undefined $ test" gibi bir hata ile karşılaşabilirsiniz.

Bunu şu şekilde yapabilirsiniz:

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

İlk koşul kabul edilmediği için herhangi bir hata yapmayacaksınız.


$test!==nullParantez olmadan kullanırsak ne olur? Hata verecek mi?
Vir

Hayır, sorun da yok.
TiDJ

7

Kontrol etmek için değişkenin ayarlanmış olup olmadığını isset işlevini kullanmanız gerekir.

$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 />';
}

bu kod yazdırılacak:

isset true
isset false

https://php.net/manual/en/function.isset.php adresinde daha fazlasını okuyun


6

Kullanabilirsiniz -

POST / GET tarafından ayarlanan hava değerini kontrol etmek için üçlü operatör veya bunun gibi bir şey değil

$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'] : '';

3

JavaScript en 'sıkı eşit değildir' operatörü ( !==kıyasla üzerine) undefinedyok değil neden falseüzerinde nulldeğerler.

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

PHP'de eşdeğer bir davranış elde etmek için, değişken adının sonucunun anahtarlarında bulunup bulunmadığını kontrol edebilirsiniz 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();

Çoğu durumda isset($variable)uygundur. Bu eş değerdir array_key_exists('variable', get_defined_vars()) && null !== $variable. Sadece kullanırsanız null !== $variablevarlığı için prechecking olmadan sen uyarılarla altüst günlükleri okumak için bir girişim olduğu için olacak değerini tanımlanmamış bir değişkenin.

Bununla birlikte, tanımsız bir değişkeni herhangi bir uyarı olmadan bir referansa uygulayabilirsiniz:

// 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

1

Bir değişkenin ayarlanıp ayarlanmadığını test etmek için PHP isset () işlevini kullanabilirsiniz. İsset () NULL atanmış olan bir değişken test eğer FALSE döndürür. Misal:

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

Bu kod, "$ var1 ayarlandığı için bu satır yazdırılır."

https://stackhowto.com/how-to-check-if-a-variable-is-undefined-in-php/ adresinde daha fazlasını okuyun


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

VEYA

if(!isset($variable)){
    $isTouch = "";// 
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.