Foros del Web » Programando para Internet » PHP »

include a matriz php

Estas en el tema de include a matriz php en el foro de PHP en Foros del Web. Tengo un problema que por más vueltas que le doy no puedo solucionarlo, solamente pondré los trozos de código que son importantes: el archivo principal ...
  #1 (permalink)  
Antiguo 09/12/2010, 15:36
 
Fecha de Ingreso: diciembre-2010
Mensajes: 5
Antigüedad: 13 años, 4 meses
Puntos: 0
include a matriz php

Tengo un problema que por más vueltas que le doy no puedo solucionarlo, solamente pondré los trozos de código que son importantes:

el archivo principal mov1aavs.php tiene que hacer una llamada al archivo matrizene.php y matrizher.php, ambos archivos tienen prácticamente la misma forma, solo cambia el resultado de las matrices

a partir de aquí

$vs=$dex-$dexvs;
for(;;)
{
if ($resi<=0) break;
if ($resvs<=0) break;
$sue=mt_rand(0,9);

include 'C:\xampp\htdocs\matrix\matrizene.php';
if ($vs<=11) $totene=$matrizene[$sue][$vs];
if ($vs>11) $totene=$matrizene[$sue][11];
$resvs=$resvs-$totene;

include 'C:\xampp\htdocs\matrix\matrizher.php';
if ($vs<=11) $tother=$matrizher[$sue][$vs];
if ($vs>11) $tother=$matrizher[$sue][11];
$resi=$resi-$tother;
}

necesito sacar el resultado de una matriz que están en los archivos anteriormente mencionados, y son 2 valores, el valor $sue que es un random entre 1 y 9 y el valor $vs que es el resultado de una resta que puede dar resultado negativo o positivo.

los archivos de las matrices tienen este modelo:
<?php
$matrizene[1][-11]=0;
$matrizene[1][-10]=0;
$matrizene[1][-9]=0;
$matrizene[1][-8]=0;
$matrizene[1][-7]=0;
$matrizene[1][-6]=0;
$matrizene[1][-5]=0;
$matrizene[1][-4]=-1;
$matrizene[1][-3]=-1;
$matrizene[1][-2]=-2;
(...)
?>

por ejemplo si $sue=1 y $vs=-11, la variable $totene tendría que dar como resultado 0 que es el resultado de la primera matriz del archivo lo mismo pasaría con tother
  #2 (permalink)  
Antiguo 09/12/2010, 15:56
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: include a matriz php

si los archivos q incluyes son datos estaticospor que no los inclueys solo una vez

por otra parte los archivos deverias incluirlos con direccion url no con direccion en tu pc
Código PHP:
<?php
$vs
=$dex-$dexvs;
include 
'matrizher.php';
include 
'matrizene.php';

for(;;)
{
if (
$resi<=0) break;
if (
$resvs<=0) break;
$sue=mt_rand(0,9);


if (
$vs<=11$totene=$matrizene[$sue][$vs];
if (
$vs>11$totene=$matrizene[$sue][11];
$resvs=$resvs-$totene;


if (
$vs<=11$tother=$matrizher[$sue][$vs];
if (
$vs>11$tother=$matrizher[$sue][11];
$resi=$resi-$tother;
}
  #3 (permalink)  
Antiguo 09/12/2010, 16:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: include a matriz php

@Death_empire es incorrecto incluir un archivo por su url, ya que incluyes el resultado del script y no el script como tal, para usar include debes de usar la direccion local.

Saludos.
  #4 (permalink)  
Antiguo 09/12/2010, 16:12
 
Fecha de Ingreso: diciembre-2010
Mensajes: 5
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: include a matriz php

pongo la ruta absoluta para asegurarme que la coge bien, lo estoy haciendo todo en localhost, lo he cambiado a como me has dicho y me tira este error "Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\..............\mov1aavs.php on line 77"
esa línea se corresponde con $resi=$resi-$tother; de lo que no estoy seguro es de tener bien el archivo de las matrices
  #5 (permalink)  
Antiguo 09/12/2010, 16:49
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: include a matriz php

las rutas absolutas no deberian ser utilizadas, efectivamente seria mejor que las matrices estuvieran en el mismo archivo.

La manera en que haces el for resulta en ejecución interminable, por eso termina cuando llega al limite de 60 seg. de ejecucion, ya que nunca se cumple la condicion que pones, ademas $vs nunca cambia de valor en ese segmento de codigo.

Seria mejor si indicas más o menos qué quieres lograr
  #6 (permalink)  
Antiguo 09/12/2010, 17:07
 
Fecha de Ingreso: diciembre-2010
Mensajes: 5
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: include a matriz php

$vs no debe cambiar, el bucle se debe cerrar cuando $resvs o $res lleguen a 0, o menos, lo que quiero hacer es que esos valores bajen según ponga en los archivos de las matrices
matrizene.php es para el valor $resvs
matrizher.php es para el valor $res

para las 2 funciones es igual, se genera el random $sue que es el primer valor de la matriz y el segundo valor de la matriz siempre es $vs que no cambia,

por ejemplo para $resvs, si $sue=1 y $vs=-2 entonces el valor que $totene debe salir de la matriz $matrizene[1][-2]=-2, que corresponden a $sue y $vs, el resultado entonces es -2 que será el valor de $totene y se le restará a $resvs

igual pasa abajo con $resi y su archivo matriz matrizher.php, hasta que $res o $resi sea menor o igual a 0 entonces el bucle for se cierra

es un poco lioso pero tampoco me funciona poniendo los arrays antes del for, me saca el error de maximum execution time
  #7 (permalink)  
Antiguo 09/12/2010, 17:35
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: include a matriz php

mi recomendación es la siguiente:

si usas los includes a archivos que solo contiene una matriz es como si los tuvieras de base de datos. ahora bien, hay otros sistemas más fiables para usar una base de datos y probablemente más estables, y no solo me refiero a mysql, también puedes implementar un archivo de texto plano, es más organizado y más cómodo de mantener.

por otro lado, cuando asignes un nombre a una variable has que ese nombre tenga un significado completo y una descripción rápida de lo que contiene la variable.

es más fácil identificar $nombreperro que $np, por ejemplo, intenta modificar esto en tu código, segundo veo un bucle for que no tiene parámetros, lo normal en estos bucles es que se implementen como contadores, no es muy recomendable salir de ellos rompiendolos con un break, este método es más recomendable en casos excepcionales, yo te recomendaría un while, pero usando un condicional, no dejándolo vacío.

por otro lado, a primera vista, tú código no me es muy claro, qué objetivos tienes? cual es el problema que requiere ser solucionado mediante programación? a lo mejor has tomado un camino incorrecto, mucha gente suele calentarse la cabeza en solucionar un código con error cuando el problema está en el algoritmo que se emplea para solucionar el problema.

y ya para terminar debo decir que en tu matriz hay valores negativos, una resta entre un positivo y un negativo es igual a la suma de los valores absolutos, con lo cual en el peor de los casos, y teniendo en cuenta que el valor se elige aleatoriamente, tu bucle podría prolongarse hasta el infinito.
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #8 (permalink)  
Antiguo 10/12/2010, 04:05
 
Fecha de Ingreso: diciembre-2010
Mensajes: 5
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: include a matriz php

Cita:
Iniciado por jaao_death Ver Mensaje
y ya para terminar debo decir que en tu matriz hay valores negativos, una resta entre un positivo y un negativo es igual a la suma de los valores absolutos, con lo cual en el peor de los casos, y teniendo en cuenta que el valor se elige aleatoriamente, tu bucle podría prolongarse hasta el infinito.
ha sido eso lo que me ha iluminado, efectivamente solo hacía sumas de menos por menos así jamás sería menor o igual que cero los valores necesarios, al final lo he solucionado así:

Código PHP:
include 'matrizene.php';
include 
'matrizher.php';
for(;;)
{
if(
$resvs<=0)break;
if(
$resi<=0)break;

$sue=mt_rand(0,9);

if (
$vs<=11$totene=$matrizene[$sue][$vs];
if (
$vs>11$totene=$matrizene[$sue][11];
$resvs=$resvs+$totene;

if (
$vs<=11$tother=$matrizher[$sue][$vs];
if (
$vs>11$tother=$matrizher[$sue][11];
$resi=$resi+$tother;

he probado haciéndolo con el while, pero como no podría ser de otro modo, de alguna u otra forma lo hacía mal
Código PHP:
while ($resvs>|| $resi>0)
{
... 
pero de esta manera el bucle no acababa hasta que fueran los 2 valores menores que cero, volví con el for infinito y los break y por fin se comporta como necesito

mi mas sincero agradecimiento a tod@s, en especial a jaao_death
  #9 (permalink)  
Antiguo 10/12/2010, 06:22
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: include a matriz php

jeje, tú me agradeces, otros prefieren mandarme penalizaciones y bajarme el karma.. =P, al fin y al cabo solo me apunté aquí para ayudar y ser ayudado. por otro lado, el while podría ser igual al for pero quitando la parte de los breaks y no usando disyunción sino conjunción:

Código PHP:
while ($resvs && $resi 0) { // si una de las dos es falsa sale del bucle
//...

__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter

Última edición por jaao_death; 10/12/2010 a las 06:22 Razón: karma con ka, jejje "carma"

Etiquetas: include, matriz
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 11:09.