[英]Checking if an attribute value is null or empty
我在Oracle RightNow CRM中使用PHP操作JSON數據時遇到了問題。 樣本json包含在下面。 當我嘗試檢入if條件時,“person.private_email”屬性中包含的數據,只有在存在某些數據時才會計算為true。 如果該屬性沒有數據,則不執行任何操作。 我沒有得到任何錯誤。 檢查任何屬性是否包含數據的最佳方法是什么。
{
"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": ""
}
self::$person=json_decode($json);
if (isset(self::$person->{'PERSON.PRIVATE_EMAIL'}) && !empty(self::$person->{'PERSON.PRIVATE_EMAIL'}))
我認為你不能同時檢查(&&),因為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.