UTNianos

Versión completa: Arrays con Querys felices-
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Ando buscando alguna biblioteca en la que se puedan hacer "querys felices" a arrays, que funcione en PHP 5.3.6.

Esto es, algo tipo los collect/selects de smalltalk.

Si no, si conoces alguna libreria que tenga la posiblidad de hacer "querys tipo sql" a arrays (no importa el formato, pero que reciba un string, un array, y que retorne el resultado).

Muchas gracias!
No entendi. Como querys felices a arrays?
mmmm
que yo sepa no hay nada. pero tenes array_walk y sus amigos, que sirven bastante bien...
habria que desarrollar algo asi..

Off-topic:
Que lindo C sharp. Tenés LINQ, donde podes aplicar cualquier query que aplicarias a una db...y eso extiende a todas las colecciones (arrays, listas, colecciones queriables...) =P.

(Bah, si entendi bien lo que vos querrías hacer. Segun entiendo es decirle array.Where( a => a.Propiedad >= 2) por ejemplo y que eso te de otro array del mismo tipo como resultado).
array walk y anonymous functions is enough for you
Cita:No entendi. Como querys felices a arrays?

Cita:Esto es, algo tipo los collect/selects de smalltalk.


A los demas... muchas gracias! Ahora me voy a poner en campaña para ver que onda eso... realmente mi nivel de php es bastante bajo, ni sabia que habia funciones anonimas =P
existen desde PHP 5.3 si no pifio
Me respondes con lo mismo que ya habias puesto?
Espera que te explayes un poco mejor, para no tener que googlear yo como maneja smalltalk los select para poder responderte.
basicamente un select es un array_walk, pero que te devuelve un array con los elementos que hagan que una funcion devuelva true
y un select no hacia lo mismo? solo que en vez de array te devuelve un tipo de coleccion (bag, ordered, dictionary) igual a la que usa el select..
Imakuni, sentite libre de portar las commons-library de Operativos a PHP =P

Si están hechas en C, en PHP va a ser una papa =)

Off-topic:

che, que piola eso.
haganle mas publicidad
¿A las commons?

Creo que en todas las charlas de Operativos las nombramos =P
ahi esta:

http://nikic.github.io/2012/07/27/How-to...o-PHP.html

y despues hacemos lobby para que lo metan derecho al core de php
buenas, volvi.

Bueno, el array_walk no me sirve =P.

O sea, le tira la funcion a cada elemento del array... hasta ahi OK.
Pero el array_walk no me permite modificar nada que no sea el propio array que está recorriendo. Estuve buscando en el sitio de php, pero no encontré nada que me sirva como collect "nativo".

Quisiera hacer algo como el segundo ejemplo de este flaco: http://www.php.net/manual/es/function.ar....php#56897 , que lo resuelve "pasando como referencia" el valor a modificar... y recibiendo como referencia el mismo del otro lado.

O sea, hace esto:



function enumerate( &$item1, $key, &$startNum ) { ... aca modifica startnum ... }
array_walk($fruits, 'enumerate', &$num );// FIjensé que &$num lo pasa por referencia, igual que &$startNum



La idea mia sería que "startNum" sea en realidad un array.

Igual nada... ahora con un for y un if puedo solucionar el problema =P... pero no es la idea!

Si a alguno le sirve... hasta encontrar algo mejor lo solucioné de la siguiente forma:



/*
functionToDo es la función que voy a llamar, la obtengo de otro lado. NO es un string, es un "objeto funcion".
theQuery es un conjunto de valores que recibo por post, y que utiliza la función asignada a functionToDo.
Para el ejemplo, solo tiene dos parametros, "value" que es el valor esperado, y "prop1" que es la propiedad a
queryear

Un ejemplo de funcion sería:

$igualComparator = function ($elem,$i,$theQuery){
return $elem->$theQuery["prop1"] == $theQuery["value"];
};

$functionToDo = $igualComparator; // ponele

*/

foreach ($arrayObjects as $key => $elem){
$r = call_user_func($functionToDo,$elem,$key,$theQuery);
if($r){
$queryResponse[] = $elem;
}
}




De paso cañaso les pregunto... ¿Hay algun problema de seguridad con que $theQuery sea algo que obtengo directamente desde el $_POST? (onda, que le puedan pasa algun argumento loco para que modifique alguna variable, o llame a alguna funcion fuera del objeto que estoy consultando)

Gracias de nuevo!
Páginas: 1 2
URLs de referencia