Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: demonstrator en 4 Septiembre 2014, 00:57 AM

Título: comparar 2 arrays en php con > o <
Publicado por: demonstrator en 4 Septiembre 2014, 00:57 AM
Hola saludos tengo un un problema que por mas que le busco no he dado con solucion tengo el siguiente para de arrays y de esto necesito comparar primero los nombres para filtrar los que son iguales para despues a sus cantidades aplicarles un criterio de si es mayor que > me arroje algun echo con las cantidades en si el problema no es tanto eso si no que no me arroje cosas como que se da el caso de que encuentra que es mayor que 2 valores del otro array y no tome en cuenta que su clave sea la misma


Array1 ( [nombre] => Array (
Título: Re: comparar 2 arrays en php con > o <
Publicado por: MinusFour en 4 Septiembre 2014, 01:51 AM
La estructura de tus arreglos me resulta confusa. ¿Puedes poner los arreglos en php?
Título: Re: comparar 2 arrays en php con > o <
Publicado por: demonstrator en 4 Septiembre 2014, 02:38 AM
Código (php) [Seleccionar]
<?php 

$result1
=mysql_query("SELECT stock_name AS nombre, SUM(quantity) AS cantidad FROM stockut3.stock_sales WHERE '{$_POST['stock_name']}' LIKE '%{$_POST['stock_name']}%' and due='1969-12-31' AND stock_name!='' GROUP BY stock_name");


$result2=mysql_num_rows($result1);
$stockname=$_POST['stock_name'];
$cant=$_POST['quty'];

$contnombre=count($stockname);
$reingname array_fill(0$contnombre'nombre');
$reingcant =array_fill(0$contnombre'cantidad');
$multireingname =array_fill(0$contnombre$reingname);
$multireingcant =array_fill(0$contnombre$reingcant);
$multiname =array_fill(0$contnombre$stockname);
$multicant =array_fill(0$contnombre$cant);

$reing=array_combine($multireingname[0], $multiname);
$reing1=array_combine($multireingcant[0], $multicant);
$reing2=array_merge($reing$reing1);





 
while($result2 mysql_fetch_assoc($result1)) { 


    
   if((
$reing2['nombre']==$result2['nombre'])and($reing2['cantidad']>$result2['cantidad'])){
var_dump($reing2['cantidad']);

}}
?>


le hice algunas midificaciones pero en esencia esto es lo que tengo sigo sin poder hacer una comparacion correcta
Título: Re: comparar 2 arrays en php con > o <
Publicado por: MinusFour en 4 Septiembre 2014, 03:34 AM
Suponiendo que $stockname es un arreglo como:

Código (php) [Seleccionar]

array("lapicero", "borrador");


y $cant:

Código (php) [Seleccionar]

array(4, 3);


Después de todos los malabares que haces con los arreglos deberías acabar con:
Código (php) [Seleccionar]

array(2) {
 ["nombre"]=>
 array(2) {
   [0]=>
   string(8) "lapicero"
   [1]=>
   string(8) "borrador"
 }
 ["cantidad"]=>
 array(2) {
   [0]=>
   int(3)
   [1]=>
   int(4)
 }
}


Cuando tu haces:

Código (php) [Seleccionar]

$reing2['nombre'] == $result2['nombre']


Realmente estás comparando un arreglo:

Código (php) [Seleccionar]

array(2) {
   [0]=>
   string(8) "lapicero"
   [1]=>
   string(8) "borrador"
 }


Con un valor de la tabla que me imagino puede ser cualquiera de las opciones que pasas por Stockname:

Código (php) [Seleccionar]

$result2['nombre'] = 'lapiz';
//o
$result2['nombre'] = 'borrador';


Si quieres comparar nombres, debes hacer un for (o foreach):

Código (php) [Seleccionar]

foreach($reing2["nombre"] as $key => $value){
if($value == $result2['name']){
if($reing2["cantidad"][$key] < $result2["cantidad"]){
$maximo = $result2["cantidad"];
$minimo = $reing2["cantidad"][$key];
} else {
$maximo = $reing2["cantidad"][$key];
$minimo = $result2["cantidad"];
}
}
}


Y si esa es la estructura que quieres finalmente, no necesitas hacer todos esos arreglos:

Código (php) [Seleccionar]

$array = array('nombre' => $stockname, 'cantidad' => $cant);
Título: Re: comparar 2 arrays en php con > o <
Publicado por: demonstrator en 4 Septiembre 2014, 07:25 AM
no lo habia pensado de esa manera lo probare y te cuento como me fue.... nada mas como comentario la razon de los arreglos que hice con todos eso llenados de arrays y y array_combine y final array merge en efecto fue para ordenar los arrays originales que me entregan arreglos no asociativos en un solo array de arrays que me relacione los arrays $stockname y $cant.

tengo 2 input text a los cuales les puedo insertar varios valores uno es para stockname y otro es para $cant y el par de arrays que me arrojan son:

Array (
Título: Re: comparar 2 arrays en php con > o <
Publicado por: MinusFour en 5 Septiembre 2014, 02:54 AM
Se me escapo un nombre, pienso en inglés cuando programo.

Te recuerdo que el $minimo y $maximo cambian de acuerdo al ciclo. Al final del foreach, $maximo y $minimo son los últimos que se encontraron cuando coincidieron los nombres del arreglo y el valor de la tabla.

No entiendo muy bien que es lo que quieres hacer, ¿Puedes darme una idea de como quieres que opere tu programa?
Título: Re: comparar 2 arrays en php con > o <
Publicado por: demonstrator en 5 Septiembre 2014, 03:48 AM
Por supuesto que si, me pasa algo parecido con lo del ingles... pero bueno volviendo al tema te comento que en esta parte del programa lo que necesito hacer es condicionar el ingreso de articulos que fueron asignados a prestamo y que seran reingresados al stock del sistema esto para controlar la existencia de herramienta o equipo que no este dado de alta en el sistema y que no haya resgistro que se haya prestado oviamente el sistema debio haberlos dado de alta con anterioridad a traves de una compra hecha esta parte esta resuelta en si la parte de control de prestamos de herramientas es la que esta todavia pendiente y por lo demas solo necesito controlar el reinreso de equipos previamente prestados para mantener el stock apegado a la realidad el flujo de trabajo seria como el que sigue:

tabla ingreso articulo comprado------tablastock------tabla salida de articulos
tabla reingreso articulo prestado-----tablastock------tabla salida a prestamo

de esto cuando haya un reingreso de un articulo sera necesario verificar que ese articulo este registrado como prestado es decir la tabla que la consulta que hago v seria la de"salidas a prestamo" de esta forma control tanto lo que sale como lo que reingresa y la unica forma en que los prestamos pueden sar mayores que los reingresos son por que hay compras que se ingresan a tablastock y de ahi cada producto agarra su destino en el caso de los que salen simplemente salen y no regresan fin de la historia pero en el caso de los que se prestan si necesito verificarlos de tal manera que el stock no sufra corrupciones por ingresos extras que en realidad son compras o simplemente no existen, por lo de los valores minimo y maximo si me ha quedado claron como funcionan ya los probe con diferentes situaciones