Differences Between: [Versions 310 and 402] [Versions 311 and 402] [Versions 39 and 402]
1 <?php 2 /** 3 * RecordSet Filter. 4 * 5 * This file is part of ADOdb, a Database Abstraction Layer library for PHP. 6 * 7 * @package ADOdb 8 * @link https://adodb.org Project's web site and documentation 9 * @link https://github.com/ADOdb/ADOdb Source code and issue tracker 10 * 11 * The ADOdb Library is dual-licensed, released under both the BSD 3-Clause 12 * and the GNU Lesser General Public Licence (LGPL) v2.1 or, at your option, 13 * any later version. This means you can use it in proprietary products. 14 * See the LICENSE.md file distributed with this source code for details. 15 * @license BSD-3-Clause 16 * @license LGPL-2.1-or-later 17 * 18 * @copyright 2000-2013 John Lim 19 * @copyright 2014 Damien Regad, Mark Newnham and the ADOdb community 20 */ 21 22 /* 23 Filter all fields and all rows in a recordset and returns the 24 processed recordset. We scroll to the beginning of the new recordset 25 after processing. 26 27 We pass a recordset and function name to RSFilter($rs,'rowfunc'); 28 and the function will be called multiple times, once 29 for each row in the recordset. The function will be passed 30 an array containing one row repeatedly. 31 32 Example: 33 34 // ucwords() every element in the recordset 35 function do_ucwords(&$arr,$rs) 36 { 37 foreach($arr as $k => $v) { 38 $arr[$k] = ucwords($v); 39 } 40 } 41 $rs = RSFilter($rs,'do_ucwords'); 42 */ 43 function RSFilter($rs,$fn) 44 { 45 if ($rs->databaseType != 'array') { 46 if (!$rs->connection) return false; 47 48 $rs = $rs->connection->_rs2rs($rs); 49 } 50 $rows = $rs->RecordCount(); 51 for ($i=0; $i < $rows; $i++) { 52 if (is_array ($fn)) { 53 $obj = $fn[0]; 54 $method = $fn[1]; 55 $obj->$method ($rs->_array[$i],$rs); 56 } else { 57 $fn($rs->_array[$i],$rs); 58 } 59 60 } 61 if (!$rs->EOF) { 62 $rs->_currentRow = 0; 63 $rs->fields = $rs->_array[0]; 64 } 65 66 return $rs; 67 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body