isDefinedValue(varname[, value])
Last updated October 30, 2013
Version: 1 | Requires: CF5 | Library: DataManipulationLib
Description:
Checks that a variable is defined and that the variable is not an empty value. Optionally allows you to specify the "correct" value of the variable.
Use like isDefined function to confirm the variable has a value that is not empty.
For a variable name:
- if defined and has value returns true
- if not defined returns false
- if is defined and has empty value returns false
varname is a string value like isDefined.
Checks arrays, structures, queries and simple variables.
A checked value must be a simple value.
A "" value will return false
Usage Notes.
1) Array indexes, like myArray[1]. are checked by first removing the index to confirm the array is defined, then checks the indexed location for a simple value. If the index is missing or bogus, the function throws an error.
2) Query record set results, like qGetEmployees.FirstName, check the first record?s value, not the entire record set.
3) Queries results with a zero record count return false.
Simple Example:
<cfparam name="url.test" type="boolean" default="1">
isDefinedValue("url.test") returns 1
<cfparam name="url.test" type="string" default="">
isDefinedValue("url.test") returns 0
Return Values:
boolean - 1 or 0
Example:
<cfset request.box = structnew()>
<cfset MyNewArray[1] = "test">
<cfset MyNewArray[2] = "">
<CFPARAM name = "request.box.side" DEFAULT = "">
<CFPARAM name = "simplevalue" DEFAULT = "#Now()#">
<cfparam name="URL.name" default="">
<cfparam name="url.test" type="boolean" default="1">
<cfoutput>#isDefinedValue("url.test")# </cfoutput>
<br><br> simplevalue
<cfif isDefinedValue("simplevalue")>
<br> happy <cfdump var="#simplevalue#">
<cfelse>
<br> no joy simplevalue
</cfif>
<br><br>Structure.Key
<cfif isDefinedValue("request.box.side")>
<br> happy <cfdump var="#request.box#">
<cfelse>
<br> no joy Structure Key
</cfif>
<br><br>Structure
<cfif isDefined("request.box" )>
<br>happy <cfdump var="#request.box#">
<cfelse>
<br> no joy Structure
</cfif>
<br><br> MyNewArray [1]
<cfif isDefinedValue("MyNewArray[1]")>
<br> happy <cfdump var="#MyNewArray#">
<cfelse>
<br> no joy MyNewArray
</cfif>
<br><br> MyNewArray [2]
<cfif isDefinedValue("MyNewArray[2]")>
<br> happy <cfdump var="#MyNewArray#">
<cfelse>
<br> no joy MyNewArray
</cfif>
<br><br> URL.name
<cfif isDefinedValue("URL.name")>
<br> happy <cfdump var="#URL.name#">
<cfelse>
<br> no joy URL.name
</cfif>
<!--- make a query on the snippets datasource --->
<br><br> With No Query
<cfif IsDefinedValue("qGetEmployees")>
<br> <cfdump var="#qGetEmployees#">
<cfelse>
<br> no joy qGetEmployees
</cfif>
<br><br> With Results Query
<cfdirectory action="list" directory="#expandPath("/WEB-INF/debug/")#" name="getFiles">
<P>
<cfdump var="#getFiles#">
<br><br> With Results Query<br>
<cfif IsDefinedValue("getFiles")>
Yes, the query exists and is not empty
</cfif>
<br><br> With Results Query on field
<cfif IsDefinedValue("getFiles.size")>
<br> Yes, the field "size" is defined in the query "getFiles"
</cfif>
<br><br> With No Results Query
<cfquery name = "getFilesFiltered" dbType="query">
SELECT *
FROM getFiles
WHERE name = 'IDoNotExist'
</cfquery>
<cfif NOT IsDefinedValue("getFilesFiltered")>
<br> No, this query is empty
</cfif>
Parameters:
Name | Description | Required |
---|---|---|
varname | Name of the variable to check for | Yes |
value | The value a simple variable should be to pass the test (optional) | No |
Full UDF Source:
/**
* Checks that a variable is defined and that the variable is not an empty value. Optionally lets you check that the variable is a specific value.
* See also: isEmpty() -- http://cflib.org/udf.cfm?id=420
*
* @param varname Name of the variable to check for (Required)
* @param value The value a simple variable should be to pass the test (optional) (Optional)
* @return boolean - 1 or 0
* @author Joseph Flanigan (joseph@switch-box.org)
* @version 1, October 30, 2013
*/
function isDefinedValue(varname)
{
var value = "";
if (IsDefined(listfirst(Arguments[1],"[")))
{
value = evaluate(Arguments[1]);
if (IsSimpleValue(value))
{
if (ArrayLen(Arguments) EQ 2 )
{ if ( value EQ Arguments[2]){return 1;}
else return 0;
}
else if ( find(value,"" )) {return 0;}
else return 1; // something is there, just not testing for it.
}
else if (IsStruct(value))
{
if (StructIsEmpty(value)) { return 0;}
else {return 1;}
}
else if (IsArray(value))
{
if (ArrayIsEmpty(value)) {return 0;}
else {return 1;}
}
else if (IsQuery(value))
{
if (YesNoFormat(value.recordcount)) {return 1;}
else {return 0;}
}
return 0;
}
return 0;
}
Search CFLib.org
Latest Additions
Raymond Camden added
QueryDeleteRows
November 04, 2017
Leigh added
nullPad
May 11, 2016
Raymond Camden added
stripHTML
May 10, 2016
Kevin Cotton added
date2ExcelDate
May 05, 2016
Raymond Camden added
CapFirst
April 25, 2016