Foros del Web » Programando para Internet » PHP »

Índice de un array bidimensional

Estas en el tema de Índice de un array bidimensional en el foro de PHP en Foros del Web. Buenas, llevo todo el día peleándome y no le veo sentido. Tengo un array bidimensional, creado con este código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original ...
  #1 (permalink)  
Antiguo 23/08/2018, 06:38
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Índice de un array bidimensional

Buenas, llevo todo el día peleándome y no le veo sentido.
Tengo un array bidimensional, creado con este código:

Código PHP:
Ver original
  1. while($p11 = mysql_fetch_array($p1)) {
  2.                 $projecte[$i] = array();
  3.                 $projecte[$i]['prj'] = $p11['proyecto'];
  4.                 $projecte[$i]['hores'] = 0;
  5.                 $i++;
  6.             }

Si hago var_dump de este array obtengo lo siguiente y es correcto:

ÍNDICE PRJ HORAS
0 0000-00 0
1 7122-16 0
2 7176-17 0
3 7181-17 0
4 7182-17 0
5 7183-17 0
6 7191-17 0
7 7192-18 0
8 7193-18 0
9 7194-18 0
10 7195-18 0
11 7196-18 0
12 7197-18 0
13 7198-18 0
14 7199-18 0
15 7200-18 0
16 7203-18 0
17 7204-18 0
18 9999-99 0
19 R1538 0
20 R1572 0
21 R1574 0
22 R1575 0
23 R1581 0
24 R1583 0
25 R1587 0
26 R1591 0
27 R1602 0
28 RP0016 0
29 RP0020 0

A partir de ahora leo la base de datos para ir alimentando el segundo elemento:

Código PHP:
Ver original
  1. while($b1 = mysql_fetch_array($a1)) {
  2.                 $trobat = false;
  3.                 $ndia = date('w', strtotime($b1['dia']));
  4.                 $indx = tornaIndex($b1['proyecto'], $projecte);
  5.                 $projecte[$indx]['hores'] += tornaExtres($b1['dia'],$b1['horaInici'], $b1['horaFinal']);
  6.             }
  7.  
  8. // $proyecto: es el valor que busco, por ejemplo 9999-99
  9. // $projecte: es el array
  10. function tornaIndex($proyecto, $projecte) {
  11.     foreach ($projecte as $key => $row) {
  12.         foreach($row as $prj) {
  13.             if ($prj == $proyecto) {
  14.                 return $key;
  15.             }
  16.         }
  17.     }
  18.     return -1;
  19. }

La función tornaIndex me devuelve el índice para poder sumar las horas. Pues el problema está aquí, esta función funciona para todos los elementos a excepción de los que empiezan por R. Por ejemplo: si proyecto = 7200-18, devuelve el 15, pero para R1591 no devuelve nada, no sé porqué no lo encuentra.

Alguien sabría dirme por qué?

Muchas gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #2 (permalink)  
Antiguo 24/08/2018, 06:38
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 13 años, 7 meses
Puntos: 20
Respuesta: Índice de un array bidimensional

Mira a ver si es por tipo que no lo encuentra, pero imagino que serán dos string.

Sino haz la comprobación poniendo todo a minúsculas. Y pasale un trim para eliminar espacios innecesarios.

Código PHP:
Ver original
  1. if (strtolower(trim($prj)) == strtolower(trim($proyecto)))
__________________
CHOOO COOO LAAA TEEEEEEEEE

Etiquetas: funcion, mysql
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 14:36.