PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.3
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.3
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
visualizer / vendor / phpoffice / phpexcel / Classes / PHPExcel / Calculation / Logical.php

Logical.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.0.3, at vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/Logical.php

289 lines 10.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 PHPExcel
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 *
21 * @category PHPExcel
22 * @package PHPExcel_Calculation
23 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
25 * @version ##VERSION##, ##DATE##
26 */
27
28
29 /** PHPExcel root directory */
30 if (!defined('PHPEXCEL_ROOT')) {
31 /**
32 * @ignore
33 */
34 define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
35 require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
36 }
37
38
39 /**
40 * PHPExcel_Calculation_Logical
41 *
42 * @category PHPExcel
43 * @package PHPExcel_Calculation
44 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
45 */
46 class PHPExcel_Calculation_Logical {
47
48 /**
49 * TRUE
50 *
51 * Returns the boolean TRUE.
52 *
53 * Excel Function:
54 * =TRUE()
55 *
56 * @access public
57 * @category Logical Functions
58 * @return boolean True
59 */
60 public static function TRUE() {
61 return TRUE;
62 } // function TRUE()
63
64
65 /**
66 * FALSE
67 *
68 * Returns the boolean FALSE.
69 *
70 * Excel Function:
71 * =FALSE()
72 *
73 * @access public
74 * @category Logical Functions
75 * @return boolean False
76 */
77 public static function FALSE() {
78 return FALSE;
79 } // function FALSE()
80
81
82 /**
83 * LOGICAL_AND
84 *
85 * Returns boolean TRUE if all its arguments are TRUE; returns FALSE if one or more argument is FALSE.
86 *
87 * Excel Function:
88 * =AND(logical1[,logical2[, ...]])
89 *
90 * The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays
91 * or references that contain logical values.
92 *
93 * Boolean arguments are treated as True or False as appropriate
94 * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False
95 * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds
96 * the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value
97 *
98 * @access public
99 * @category Logical Functions
100 * @param mixed $arg,... Data values
101 * @return boolean The logical AND of the arguments.
102 */
103 public static function LOGICAL_AND() {
104 // Return value
105 $returnValue = TRUE;
106
107 // Loop through the arguments
108 $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
109 $argCount = -1;
110 foreach ($aArgs as $argCount => $arg) {
111 // Is it a boolean value?
112 if (is_bool($arg)) {
113 $returnValue = $returnValue && $arg;
114 } elseif ((is_numeric($arg)) && (!is_string($arg))) {
115 $returnValue = $returnValue && ($arg != 0);
116 } elseif (is_string($arg)) {
117 $arg = strtoupper($arg);
118 if (($arg == 'TRUE') || ($arg == PHPExcel_Calculation::getTRUE())) {
119 $arg = TRUE;
120 } elseif (($arg == 'FALSE') || ($arg == PHPExcel_Calculation::getFALSE())) {
121 $arg = FALSE;
122 } else {
123 return PHPExcel_Calculation_Functions::VALUE();
124 }
125 $returnValue = $returnValue && ($arg != 0);
126 }
127 }
128
129 // Return
130 if ($argCount < 0) {
131 return PHPExcel_Calculation_Functions::VALUE();
132 }
133 return $returnValue;
134 } // function LOGICAL_AND()
135
136
137 /**
138 * LOGICAL_OR
139 *
140 * Returns boolean TRUE if any argument is TRUE; returns FALSE if all arguments are FALSE.
141 *
142 * Excel Function:
143 * =OR(logical1[,logical2[, ...]])
144 *
145 * The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays
146 * or references that contain logical values.
147 *
148 * Boolean arguments are treated as True or False as appropriate
149 * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False
150 * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds
151 * the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value
152 *
153 * @access public
154 * @category Logical Functions
155 * @param mixed $arg,... Data values
156 * @return boolean The logical OR of the arguments.
157 */
158 public static function LOGICAL_OR() {
159 // Return value
160 $returnValue = FALSE;
161
162 // Loop through the arguments
163 $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
164 $argCount = -1;
165 foreach ($aArgs as $argCount => $arg) {
166 // Is it a boolean value?
167 if (is_bool($arg)) {
168 $returnValue = $returnValue || $arg;
169 } elseif ((is_numeric($arg)) && (!is_string($arg))) {
170 $returnValue = $returnValue || ($arg != 0);
171 } elseif (is_string($arg)) {
172 $arg = strtoupper($arg);
173 if (($arg == 'TRUE') || ($arg == PHPExcel_Calculation::getTRUE())) {
174 $arg = TRUE;
175 } elseif (($arg == 'FALSE') || ($arg == PHPExcel_Calculation::getFALSE())) {
176 $arg = FALSE;
177 } else {
178 return PHPExcel_Calculation_Functions::VALUE();
179 }
180 $returnValue = $returnValue || ($arg != 0);
181 }
182 }
183
184 // Return
185 if ($argCount < 0) {
186 return PHPExcel_Calculation_Functions::VALUE();
187 }
188 return $returnValue;
189 } // function LOGICAL_OR()
190
191
192 /**
193 * NOT
194 *
195 * Returns the boolean inverse of the argument.
196 *
197 * Excel Function:
198 * =NOT(logical)
199 *
200 * The argument must evaluate to a logical value such as TRUE or FALSE
201 *
202 * Boolean arguments are treated as True or False as appropriate
203 * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False
204 * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds
205 * the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value
206 *
207 * @access public
208 * @category Logical Functions
209 * @param mixed $logical A value or expression that can be evaluated to TRUE or FALSE
210 * @return boolean The boolean inverse of the argument.
211 */
212 public static function NOT($logical=FALSE) {
213 $logical = PHPExcel_Calculation_Functions::flattenSingleValue($logical);
214 if (is_string($logical)) {
215 $logical = strtoupper($logical);
216 if (($logical == 'TRUE') || ($logical == PHPExcel_Calculation::getTRUE())) {
217 return FALSE;
218 } elseif (($logical == 'FALSE') || ($logical == PHPExcel_Calculation::getFALSE())) {
219 return TRUE;
220 } else {
221 return PHPExcel_Calculation_Functions::VALUE();
222 }
223 }
224
225 return !$logical;
226 } // function NOT()
227
228 /**
229 * STATEMENT_IF
230 *
231 * Returns one value if a condition you specify evaluates to TRUE and another value if it evaluates to FALSE.
232 *
233 * Excel Function:
234 * =IF(condition[,returnIfTrue[,returnIfFalse]])
235 *
236 * Condition is any value or expression that can be evaluated to TRUE or FALSE.
237 * For example, A10=100 is a logical expression; if the value in cell A10 is equal to 100,
238 * the expression evaluates to TRUE. Otherwise, the expression evaluates to FALSE.
239 * This argument can use any comparison calculation operator.
240 * ReturnIfTrue is the value that is returned if condition evaluates to TRUE.
241 * For example, if this argument is the text string "Within budget" and the condition argument evaluates to TRUE,
242 * then the IF function returns the text "Within budget"
243 * If condition is TRUE and ReturnIfTrue is blank, this argument returns 0 (zero). To display the word TRUE, use
244 * the logical value TRUE for this argument.
245 * ReturnIfTrue can be another formula.
246 * ReturnIfFalse is the value that is returned if condition evaluates to FALSE.
247 * For example, if this argument is the text string "Over budget" and the condition argument evaluates to FALSE,
248 * then the IF function returns the text "Over budget".
249 * If condition is FALSE and ReturnIfFalse is omitted, then the logical value FALSE is returned.
250 * If condition is FALSE and ReturnIfFalse is blank, then the value 0 (zero) is returned.
251 * ReturnIfFalse can be another formula.
252 *
253 * @access public
254 * @category Logical Functions
255 * @param mixed $condition Condition to evaluate
256 * @param mixed $returnIfTrue Value to return when condition is true
257 * @param mixed $returnIfFalse Optional value to return when condition is false
258 * @return mixed The value of returnIfTrue or returnIfFalse determined by condition
259 */
260 public static function STATEMENT_IF($condition = TRUE, $returnIfTrue = 0, $returnIfFalse = FALSE) {
261 $condition = (is_null($condition)) ? TRUE : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($condition);
262 $returnIfTrue = (is_null($returnIfTrue)) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($returnIfTrue);
263 $returnIfFalse = (is_null($returnIfFalse)) ? FALSE : PHPExcel_Calculation_Functions::flattenSingleValue($returnIfFalse);
264
265 return ($condition) ? $returnIfTrue : $returnIfFalse;
266 } // function STATEMENT_IF()
267
268
269 /**
270 * IFERROR
271 *
272 * Excel Function:
273 * =IFERROR(testValue,errorpart)
274 *
275 * @access public
276 * @category Logical Functions
277 * @param mixed $testValue Value to check, is also the value returned when no error
278 * @param mixed $errorpart Value to return when testValue is an error condition
279 * @return mixed The value of errorpart or testValue determined by error condition
280 */
281 public static function IFERROR($testValue = '', $errorpart = '') {
282 $testValue = (is_null($testValue)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($testValue);
283 $errorpart = (is_null($errorpart)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($errorpart);
284
285 return self::STATEMENT_IF(PHPExcel_Calculation_Functions::IS_ERROR($testValue), $errorpart, $testValue);
286 } // function IFERROR()
287
288 } // class PHPExcel_Calculation_Logical
289