Consulta de arrays php

Iniciado por mgarcia.informatico, 15 Enero 2015, 20:16 PM

0 Miembros y 1 Visitante están viendo este tema.

mgarcia.informatico

Estimados , necesito su ayuda.

Tengo una tabla que mediante esta funcion..

Código (php) [Seleccionar]
function getMonetario($year){
global $link;
$sql = "SELECT mon_description FROM tbl_monetaria WHERE mon_year = '$year'";
//echo $sql."--- $link";
$consulta=mysql_query($sql, $link);
//if(mysql_num_rows($consulta) > 0){
if(mysql_num_rows($consulta)){
$row = mysql_fetch_array($consulta);

return unserialize($row[0]);
}
else return "";
}


obtengo un array(bidimencional) con los datos correspondientes. como por ejemplo quedaria asi graficamente en una tabla...
                       Columna
                      1,1     2       3      5
Fila                   2       4       5      7
                      3       1       6      8
                      2,1     4       3      9

entonces la idea es generar un script o funcion, y pueda obtener los valores.. solo diagonalmente es decir.. deberia imprimir:
1,1 4 6 9
en un array seria:
Código (php) [Seleccionar]
Array [0][0] = 1,1
Array [1][1] = 4
Array [2][2] = 6
Array [3][3] = 9

Espero que me puedan ayudar. Saludos
pd: viendo unos tutorias.. se realiza mediante *** for *** o foreach ***...pero como??

Mod: usa etiquetas GeSHi cuando publiques código, no escribas frases en mayúsculas

Shell Root

#1
Por ejemplo, (creo que se llama diagonal principal)
Código (php) [Seleccionar]
$ehn[0] = array(1, 2, 3, 4);
$ehn[1] = array(5, 6, 7, 8);
$ehn[2] = array(9, 10, 11, 12);
$ehn[3] = array(13, 14, 15, 16);
   
for($i=0; $i<=count($ehn)-1; $i++){
    for($j=0; $j<=count($ehn[$i])-1; $j++){
        if( $i == $j ){
            echo $ehn[$i][$j]." ";
        }
    }
}


Resultado,
1 6 11 16
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

mgarcia.informatico

#2
Estimado gracias por responder.. tengo claro.. de la maera que realizas el arrays. pero.. no se mas o menos como hacerlo... yo tengo el siguiente script FUNCTION
Código (php) [Seleccionar]
function getMonetario($year){
global $link;
$sql = "SELECT mon_description FROM tbl_monetaria WHERE mon_year = '$year'";
//echo $sql."--- $link";
$consulta=mysql_query($sql, $link);
//if(mysql_num_rows($consulta) > 0){
if(mysql_num_rows($consulta)){
$row = mysql_fetch_array($consulta);

return unserialize($row[0]);
}
else return "";
}


Y cuando.. hago print de dicha funcion me genera esto...
Array
(
   [0] => Array
       (
           [1] => 0,6
           [2] => 0,8
           [3] => 1,3
           [4] => 2,1
           [5] => 2,8
           [6] => 3,1
           [7] => 3,2
           [8] => 3,4
           [9] => 3,7
           [10] => 4,6
           [11] => 5,7
           [12] => 5,7
       )

   [1] => Array
       (
           [2] => 0,2
           [3] => 0,7
           [4] => 1,5
           [5] => 2,1
           [6] => 2,5
           [7] => 2,5
           [8] => 2,8
           [9] => 3,1
           [10] => 4,0
           [11] => 5,1
           [12] => 5,1
       )

   [2] => Array
       (
           [3] => 0,5
           [4] => 1,3
           [5] => 2,0
           [6] => 2,3
           [7] => 2,4
           [8] => 2,6
           [9] => 2,9
           [10] => 3,8
           [11] => 4,9
           [12] => 4,9
       )

   [3] => Array
       (
           [4] => 0,8
           [5] => 1,5
           [6] => 1,8
           [7] => 1,9
           [8] => 2,1
           [9] => 2,4
           [10] => 3,3
           [11] => 4,4
           [12] => 4,4
       )

   [4] => Array
       (
           [5] => 0,6
           [6] => 1,0
           [7] => 1,0
           [8] => 1,2
           [9] => 1,6
           [10] => 2,4
           [11] => 3,5
           [12] => 3,5
       )

   [5] => Array
       (
           [6] => 0,3
           [7] => 0,4
           [8] => 0,6
           [9] => 0,9
           [10] => 1,8
           [11] => 2,9
           [12] => 2,9
       )

   [6] => Array
       (
           [7] => 0,1
           [8] => 0,3
           [9] => 0,6
           [10] => 1,5
           [11] => 2,5
           [12] => 2,5
       )

   [7] => Array
       (
           [8] => 0,2
           [9] => 0,6
           [10] => 1,4
           [11] => 2,5
           [12] => 2,5
       )

   [8] => Array
       (
           [9] => 0,3
           [10] => 1,2
           [11] => 2,2
           [12] => 2,2
       )

   [9] => Array
       (
           [10] => 0,8
           [11] => 1,9
           [12] => 1,9
       )

   [10] => Array
       (
           [11] => 1,0
           [12] => 1,1
       )

   [11] => Array
       (
           [12] => 0,0
       )

)


En otras palabras todo ese arrays.. forma una tabla.. con estos.. valores..
de filas y columnas
como puedes ver no esta declarado el array como tu ejemplo... si no que obtiene todo el array al hacer una consulta...
ya que.. esos valores van cambiando.. segun el.. año.. es decir.. los valores del año.. 2015... van a hacer distinto.. al de 2014...

Quedo atento a tu comentario


Shell Root

Es que el array que declare sólo fue por ingresar los valores imaginarios, ahora lo puedes implementar usando,

Código (php) [Seleccionar]
$ehn = function_php();
# Aquí la variable $ehn tiene el array con los valores de la consulta SQL
for($i=0; $i<=count($ehn)-1; $i++){
   for($j=0; $j<=count($ehn[$i])-1; $j++){
       if( $i == $j ){
           echo $ehn[$i][$j]." ";
       }
   }
}
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

mgarcia.informatico

#4
estimado.. estoy.. casi a punto.. de la solucion...
este es mi script..
para.. mostrar los valores.. de una tabla.. de filas y columnas:...
FUNCTION para mostrar el array de valores filas y columnas

Código (php) [Seleccionar]
function getMonetario($year){
global $link;
$sql = "SELECT mon_description FROM tbl_monetaria WHERE mon_year = '$year'";
//echo $sql."--- $link";
$consulta=mysql_query($sql, $link);
//if(mysql_num_rows($consulta) > 0){
if(mysql_num_rows($consulta)){
$row = mysql_fetch_array($consulta);

return unserialize($row[0]);
}
else return "";
}

Y cuando.. hago print de esta forma...

Código (php) [Seleccionar]
$arrayYear = getMonetario(2014);
echo "<pre>";
print_r ($arrayYear);
echo "</pre>";


para mostrarme.. los valores de la tabla de columnas y filas en un arrar que es lo correcto..

Array
(

=> Array
(
[1] => 0,6
[2] => 0,8
[3] => 1,3
[4] => 2,1
[5] => 2,8
[6] => 3,1
[7] => 3,2
[8] => 3,4
[9] => 3,7
[10] => 4,6
[11] => 5,7
[12] => 5,7
)

[1] => Array
(
[2] => 0,2
[3] => 0,7
[4] => 1,5
[5] => 2,1
[6] => 2,5
[7] => 2,5
[8] => 2,8
[9] => 3,1
[10] => 4,0
[11] => 5,1
[12] => 5,1
)

[2] => Array
(
[3] => 0,5
[4] => 1,3
[5] => 2,0
[6] => 2,3
[7] => 2,4
[8] => 2,6
[9] => 2,9
[10] => 3,8
[11] => 4,9
[12] => 4,9
)

[3] => Array
(
[4] => 0,8
[5] => 1,5
[6] => 1,8
[7] => 1,9
[8] => 2,1
[9] => 2,4
[10] => 3,3
[11] => 4,4
[12] => 4,4
)

[4] => Array
(
[5] => 0,6
[6] => 1,0
[7] => 1,0
[8] => 1,2
[9] => 1,6
[10] => 2,4
[11] => 3,5
[12] => 3,5
)

[5] => Array
(
[6] => 0,3
[7] => 0,4
[8] => 0,6
[9] => 0,9
[10] => 1,8
[11] => 2,9
[12] => 2,9
)

[6] => Array
(
[7] => 0,1
[8] => 0,3
[9] => 0,6
[10] => 1,5
[11] => 2,5
[12] => 2,5
)

[7] => Array
(
[8] => 0,2
[9] => 0,6
[10] => 1,4
[11] => 2,5
[12] => 2,5
)

[8] => Array
(
[9] => 0,3
[10] => 1,2
[11] => 2,2
[12] => 2,2
)

[9] => Array
(
[10] => 0,8
[11] => 1,9
[12] => 1,9
)

[10] => Array
(
[11] => 1,0
[12] => 1,1
)

[11] => Array
(
[12] => 0,0
)

)


pero.. ahora. estoy.. creando una funcion... para.. poder.. imprimir.. los datos de dicho array....en diagonal principal..

estoy.. haciendo.. esto pero.. no resulta.. ayudame.. por fa.. si estoy.. vien o mal..
funcion para mostrar valores en diagonal


Código (php) [Seleccionar]
function getValorizacionMes(){
global $_POST, $meses;
$anoAdquirido = 2014;

$ehn = getMonetario($anoAdquirido);
# Aquí la variable $ehn tiene el array con los valores de la consulta SQL
for($i=0; $i<=count($ehn)-1; $i++){
for($j=0; $j<=count($ehn[$i])-1; $j++){
if( $i == $j ){
echo $ehn[$i][$j]." ";
}
}
}

Shell Root

y cuando llamas la función que valor te sale? errores?
PD: Recuerda etiquetar el código dentro de [ code ]
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

engel lex

#6
Te modifiqué los temas

por favor al publicar codigo usa las etiquetas GeSHi, y al publicar datos usa la code (el simbolo numeral)

evita usar las mayusculas para escribir... si quieres resaltar algo hay herramientas para ello

procura publicar en elforo correcto (si es php va para php) y evita publicar más de una vez el mismo tema
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MinusFour

Lo puedes hacer con un solo for para sacar 0,0 1,1 2,2 3,3 etc.

Código (php) [Seleccionar]

$arr = array(
array(1,2,3,4),
array(5,6,7,8),
array(9,10,11,12),
array(13,14,15,16)
);

for($i = 0;$i < count($arr); $i++){
echo $arr[$i][$i] . " ";
}