Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/08/2018, 06:38
mblascog
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 10 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