簡體   English   中英

檢查屬性值是null還是空

[英]Checking if an attribute value is null or empty

我在Oracle RightNow CRM中使用PHP操作JSON數據時遇到了問題。 樣本json包含在下面。 當我嘗試檢入if條件時,“person.private_email”屬性中包含的數據,只有在存在某些數據時才會計算為true。 如果該屬性沒有數據,則不執行任何操作。 我沒有得到任何錯誤。 檢查任何屬性是否包含數據的最佳方法是什么。

JSON

{
    "PERSON.PERSON_ID": 272839,
    "PERSON.Surname": "FirstName",
    "PERSON.Given_Names": "LastName",
    "PERSON.TITLE": "MR",
    "PERSON.BIRTH_DT": "10/JUL/14",
    "PERSON.GENDER": "M",
    "PERSON.CDU_EMAIL": "S272839@mydomain.com",
    "PERSON.PRIVATE_EMAIL": ""
}

PHP

self::$person=json_decode($json);

if (isset(self::$person->{'PERSON.PRIVATE_EMAIL'}) && !empty(self::$person->{'PERSON.PRIVATE_EMAIL'}))

要檢查它是否為null, isset()就足夠了,為了檢查它是否為空,你最好trim()字符串,因為它刪除了空格,如果用empty()函數檢查空格,則空格被計為字符。

$email = self::$person->{'PERSON.PRIVATE_EMAIL'};
if (isset($email) && trim($email) != '')
    echo "Contains data";

我認為你不能同時檢查(&&),因為isset()將檢查是否在JSON數據中設置了PERSON.PRIVATE_EMAIL,否則如果它只是空白,那么empty()就足夠了。

也許應該把它分解成這樣的東西:

$email = "";

if (isset(self::$person->{'PERSON.PRIVATE_EMAIL'}))
{
   if(!empty(self::$person->{'PERSON.PRIVATE_EMAIL'}))
   {
       $email = self::$person->{'PERSON.PRIVATE_EMAIL'};
   }
else
{
   //email is not set in the json data
   //do something
}

要檢查對象中是否存在屬性,可以使用property_exists()

if (property_exists(self::$person, 'PERSON.PRIVATE_EMAIL')) {
    // property exists
    $value = self::$person->{'PERSON.PRIVATE_EMAIL'};
}

請注意,即使屬性為null ,這也會生成true 要檢查屬性是否存在以及它是否為null請使用isset()

if (isset(self::$person->{'PERSON.PRIVATE_EMAIL'})) {
    // property exists and is not null
}

要檢查某些東西是否為空,最好定義一些空的意思; 如果屬性只能是字符串,則空定義可能類似於:

if (strlen(trim($value))) {
    // string contains at least on non-space
}

在示例代碼中,您將json字符串解析為本地$ person變量,而在您的條件中,您正在檢查$ person的靜態類屬性....

即,$ person與self :: $ person不同。 除非您有更多代碼未共享,否則這可能是您的問題。

此代碼適用於RightNow CX w / CP2。

    $json = '{
        "PERSON.PERSON_ID": 272839,
        "PERSON.Surname": "FirstName",
        "PERSON.Given_Names": "LastName",
        "PERSON.TITLE": "MR",
        "PERSON.BIRTH_DT": "10/JUL/14",
        "PERSON.GENDER": "M",
        "PERSON.CDU_EMAIL": "S272839@mydomain.com",
        "PERSON.PRIVATE_EMAIL": ""
    }';

    $person=json_decode($json);

    if(!empty($person->{'PERSON.PRIVATE_EMAIL'}))
    {
        echo "Not Empty";
    }
    else
    {
        echo "IS Empty";
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM