2011-03-18 20 views
11

Tengo una tabla mysql con columnas como 'operation.date', 'operation.name' y etc. Después de obtener los datos de la tabla como objeto con $mysqli->fetch_object() obtengo esto (print_r de la fila):atributo de objeto php con punto en el nombre

stdClass Object 
(
[id] => 2 
[operation.date] => 2010-12-15 
[operation.name] => some_name 
) 

¿cómo puedo acces operation.date y operation.name y todas las demás propiedades del objeto extrañamente nombrados?

+3

Este es un duplicado. La respuesta es que no es una propiedad válida. Deberías cambiarlo Pero puedes usar '$ obj -> {'operation.date'}' para acceder a él. – Gordon

+0

posible duplicado de [Guiones en claves de objeto] (http://stackoverflow.com/questions/2925044/hyphens-in-keys-of-object) y también [Cómo accedo a esta propiedad de objeto] (http: // stackoverflow.com/questions/758449/php-how-do-i-access-this-object-property) – Gordon

+0

Perdón por eso. Estaba buscando pero no para guiones. – egis

Respuesta

31

especificaron alias en su consulta SQL como SELECT column AS nameWithoutDots ...
o acceder a estas propiedades con $object->{'operation.name'}
o convertir el objeto a la matriz de esta manera: $obj = (array)$obj; echo $obj['operation.name'].

+1

+1 para indicarle al OP cómo curar la causa y no los síntomas – Gordon

+1

Sé sobre alias, pero demasiado esfuerzo para escribir millas de largo consulta con todas las columnas como alias :) Como tu respuesta fue muy informativa, la aceptaré;) Gracias por todas las respuestas. – egis

3

Para acceder a estos atributos que necesita para envolverlos con llaves:

echo $object->{"operation.date"} //2010-12-15

Si define un atributo de esta manera el símbolo infractor se retira, lo que le permite acceder al atributo como echo $object->operationdate //2010-12-15

+9

+1 pero 'operation.date' necesita ser envuelto entre comillas, creo. –

+2

Necesita ajustar citas como echo $ object -> {'operation.date'} –

2

Cambie el sql para devolver nombres de propiedad válidos con la función 'como'

por ejemplo. seleccione operation.date como la fecha

8

La forma correcta de acceder a las propiedades con un punto debe ser:

echo $object->{"operation.date"} 
0

Usted puede obtener matriz asociativa en lugar objeto utilizando $mysqli->fetch_assoc()

Cuestiones relacionadas