public function test_False() { $this->assertFalse(comparar('Hola', 'Adios')); }
/** * Busca los registros en memoria que cumplen una condicion. * Solo se chequea la condicion de igualdad. No se chequean tipos * @param array $condiciones Asociativo de campo => valor. El valor no puede ser NULL porque siempre da falso * Para condiciones más complejas (no solo igualdad) puede ser array($columna, $condicion, $valor), * por ejemplo array(array('id_persona','>=',10),...) * @param boolean $usar_cursores Este conjunto de filas es afectado por la presencia de cursores en las tablas padres * @return array Ids. internos de las filas, pueden no estar numerado correlativamente */ function get_id_fila_condicion($condiciones = null, $usar_cursores = true) { //En principio las coincidencias son todas las filas $coincidencias = $this->get_id_filas($usar_cursores); //Si hay condiciones, se filtran estas filas if (isset($condiciones)) { if (!is_array($condiciones)) { throw new toba_error("Las condiciones de filtrado deben ser un array asociativo"); } //Controlo que todas los campos que se utilizan para el filtrado existan /*foreach( array_keys($condiciones) as $columna){ }*/ foreach ($coincidencias as $pos => $id_fila) { //Verifico las condiciones foreach (array_keys($condiciones) as $campo) { if (is_array($condiciones[$campo])) { list($columna, $operador, $valor) = $condiciones[$campo]; } else { $columna = $campo; $operador = '=='; $valor = $condiciones[$campo]; } if (!isset($this->_columnas[$columna])) { throw new toba_error_def("El campo '{$columna}' no existe. No es posible filtrar por dicho campo"); } if (!isset($this->_datos[$id_fila][$columna])) { // Es posible que una fila no posea una columa. Ej: una nueva fila no tiene la clave si esta es una secuencia. // Si el valor no existe, considero que la comparacion con esa fila da falso (* != NULL) unset($coincidencias[$pos]); break; } else { if (!comparar($this->_datos[$id_fila][$columna], $operador, $valor)) { //Se filtra la fila porque no cumple las condiciones unset($coincidencias[$pos]); break; } } } } } return array_values($coincidencias); }