PluginProbe
TablePress – Tables in WordPress made easy / 3.4
TablePress – Tables in WordPress made easy v3.4
3.4 3.3.4 3.3.3 3.3.2 3.3.1 trunk 1.12 1.14 1.9.2 2.0.4 2.1.7 2.1.8 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 All 45 releases
tablepress / libraries / vendor / PhpSpreadsheet / Calculation / Database / DGet.php

DGet.php in TablePress – Tables in WordPress made easy 3.4, at libraries/vendor/PhpSpreadsheet/Calculation/Database/DGet.php

52 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace TablePress\PhpOffice\PhpSpreadsheet\Calculation\Database;
4
5 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
6
7 class DGet extends DatabaseAbstract
8 {
9 /**
10 * DGET.
11 *
12 * Extracts a single value from a column of a list or database that matches conditions that you
13 * specify.
14 *
15 * Excel Function:
16 * DGET(database,field,criteria)
17 *
18 * @param mixed[] $database The range of cells that makes up the list or database.
19 * A database is a list of related data in which rows of related
20 * information are records, and columns of data are fields. The
21 * first row of the list contains labels for each column.
22 * @param null|array<mixed>|int|string $field Indicates which column is used in the function. Enter the
23 * column label enclosed between double quotation marks, such as
24 * "Age" or "Yield," or a number (without quotation marks) that
25 * represents the position of the column within the list: 1 for
26 * the first column, 2 for the second column, and so on.
27 * @param mixed[][] $criteria The range of cells that contains the conditions you specify.
28 * You can use any range for the criteria argument, as long as it
29 * includes at least one column label and at least one cell below
30 * the column label in which you specify a condition for the
31 * column.
32 * @return null|float|int|string
33 */
34 public static function evaluate(array $database, $field, array $criteria)
35 {
36 $field = self::fieldExtract($database, $field);
37 if ($field === null) {
38 return ExcelError::VALUE();
39 }
40
41 $columnData = self::getFilteredColumn($database, $field, $criteria);
42 if (count($columnData) > 1) {
43 return ExcelError::NAN();
44 }
45
46 /** @var array<null|float|int|string> */
47 $row = array_pop($columnData);
48
49 return array_pop($row);
50 }
51 }
52