Foros del Web » Programando para Internet » PHP »

Arrays asociativos, añadir valores etc.

Estas en el tema de Arrays asociativos, añadir valores etc. en el foro de PHP en Foros del Web. Tengo problemas, para variar, con los arrays asocitivos. Lo probé de mi y una formas y no hay manera. Partiendo de esto Código PHP: $nombre      ...
  #1 (permalink)  
Antiguo 31/10/2012, 05:18
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Arrays asociativos, añadir valores etc.

Tengo problemas, para variar, con los arrays asocitivos. Lo probé de mi y una formas y no hay manera. Partiendo de esto
Código PHP:
$nombre     $datos[3];
$factura     $datos[4];
$importe    $datos[5];

/*Quiero meter esos datos que vienen de un csv, 
 * en un array porque tengo que realizar varias operaciones con ellos. 
 * en principio había pensado en meterles un índica (array asociativo)
 * pero creo que voy a pasar porque no lo logro y tampoco es esencial.
 * lo que quiero es meter todos los datos que voy apasando en diferentes filas.
 * El resultado que espero es algo así:
 *
 * nombre     factura     importe
 * pepe         1752        1300 €
 * carlos        1753        7 €
 * brais          1754       45 €
 *
 * que salga el índice es lo de menos pero me gustaría para que quedara bonito.
 * Lo que intenté fué así:
 */

$clientes = array("nombre" => $nombre"factura" => $factura"importe" => $importe);

//El problema es que si hago un var_dump sólo me mete una línea, así que me está sobreescribiendo siempre los valores ya que el índice es el mismo. En fin que no se como arreglarlo.

//Probé con otras cosas como $clientes[]['nombre'] = $nombre; pero no se si es correcto o hay otra mejor forma? 

Hay algo como var_dump o print_r que imprima los datos del array pero separando mejor los valores? es que me sale una ristra de texto dificil de leer, juraria que uno de los 2 mostraba los datos de una forma más ordenada.

Por otro lado necesito buscar posteriormente un cliente en el array, si es que me vuelve a salir, y así sumar el importe a ese cliente para tener el total y no tener varias líneas con el mismo cliente y diferentes importes. No se si esto se puede hacer.

Se que hay array_search y también in_array o algo así. Pero aunque sepa que sí hay ese valor, como se en que indice está?

Última edición por alyciashape; 31/10/2012 a las 05:27
  #2 (permalink)  
Antiguo 31/10/2012, 12:41
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años
Puntos: 38
Respuesta: Arrays asociativos, añadir valores etc.

OK lo ke kieres para mostrar ordenamente tu array e imprimirlo es asi:

Código PHP:
echo '<pre>';

print_r($array);

echo 
'</pre>'
lo otro que preguntas acerca de buscar duplicados dentr de un array puedes usar :

Código PHP:

$array 
= array( 5050607080);

$valores_unicos array_unique($array);

$valores_repetidos array_diff_assoc($array$valores_unicos);

$valores_no_repetidos array_diff($valores_unicos$valores_repetidos);

/*
*
*    $valores_unicos =       Array ( [0] => 50 [2] => 60 [3] => 70 [4] => 80 ) 
*    
*    $valores_repetidos =    Array ( [1] => 50 ) 
*
*    $valores_no_repetidos = Array ( [2] => 60 [3] => 70 [4] => 80 ) 
*
*/ 
Espero que te sirva ..... suerte
  #3 (permalink)  
Antiguo 31/10/2012, 19:35
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Arrays asociativos, añadir valores etc.

Posiblemente te vendría mejor una estructura un poco más complicada, usando el ID de cliente como índice:

Código PHP:
Ver original
  1. $clientes = array(
  2.     1 => array(
  3.         'nombre' => 'Nombre del cliente # 1',
  4.         'facturas' => array(
  5.                1 => array(
  6.                      'importe' => 12345
  7.                      'fecha' => 'hoy'
  8.                )
  9.         )
  10.     )
  11. );
  12.  
  13. // Luego, para recorrerlos:
  14. foreach($clientes as $id => $datos) {
  15.     echo $datos['nombre'];
  16.     foreach($datos['facturas'] as $numfac => $datfac) {
  17.           echo $datfac['importe'];
  18.           echo $datfac['fecha'];
  19.     }
  20. }
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: arrays, asociativo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:49.