Foros del Web » Programando para Internet » PHP »

Manejo de Arrays

Estas en el tema de Manejo de Arrays en el foro de PHP en Foros del Web. Hola a todos de nuevo tengo aca un pequeño problema, resulta que tengo este array: Código PHP: Array (     [ 0 ] => Array         (             [ id ...
  #1 (permalink)  
Antiguo 07/07/2011, 21:45
 
Fecha de Ingreso: diciembre-2010
Ubicación: Perú
Mensajes: 18
Antigüedad: 13 años, 3 meses
Puntos: 0
Manejo de Arrays

Hola a todos de nuevo tengo aca un pequeño problema, resulta que tengo este array:
Código PHP:
Array
(
    [
0] => Array
        (
            [
id] => 2
            
[coincidencias] => 1
        
)

    [
1] => Array
        (
            [
id] => 3
            
[coincidencias] => 1
        
)

    [
2] => Array
        (
            [
id] => 4
            
[coincidencias] => 1
        
)

    [
3] => Array
        (
            [
id] => 5
            
[coincidencias] => 1
        
)

    [
4] => Array
        (
            [
id] => 2
            
[coincidencias] => 2
        
)

    [
5] => Array
        (
            [
id] => 3
            
[coincidencias] => 2
        
)


Entonces como se daran cuenta en cada uno de ellos hay un id y un campo coincidencias como veran el hay arrays en los que se repite el id por ejemplo el array 0 y el array 4 tienen el mismo id pero diferente coincidencia lo que yo quiero hacer es recorrer todo el array y donde encuentre id que sea igual a otro eliminar el que tenga el menor valor de coincidencia. y que por ejemplo solo quede asi
Código PHP:
Array
(
    [
0] => Array
        (
            [
id] => 4
            
[coincidencias] => 1
        
)

    [
1] => Array
        (
            [
id] => 5
            
[coincidencias] => 1
        
)

    [
2] => Array
        (
            [
id] => 2
            
[coincidencias] => 2
        
)

    [
3] => Array
        (
            [
id] => 3
            
[coincidencias] => 2
        
)


Desde ya les voy dando gracias por todas las opiniones y ayuda que puedan darme.
Erick.
  #2 (permalink)  
Antiguo 07/07/2011, 22:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Manejo de Arrays

Se me ocurre lo siguiente:

- Ordena el arreglo con las coincidencias menores en primer orden.
- Itera tu array; por cada ítem agregas en un array auxiliar una copia del mismo.

La técnica consiste en usar el numero de id como indice en el arreglo auxiliar, asi se va sobreescribiendo quedando solo el mayor.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/07/2011, 23:05
 
Fecha de Ingreso: diciembre-2010
Ubicación: Perú
Mensajes: 18
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Manejo de Arrays

Hola gracias por tu pronta respuesta, podrias darme un ejemplo por favor?
  #4 (permalink)  
Antiguo 08/07/2011, 00:48
 
Fecha de Ingreso: mayo-2010
Mensajes: 84
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: Manejo de Arrays

Cita:
Iniciado por CoericK Ver Mensaje
Hola a todos de nuevo tengo aca un pequeño problema, resulta que tengo este array:
Código PHP:
Array
(
    [
0] => Array
        (
            [
id] => 2
            
[coincidencias] => 1
        
)

    [
1] => Array
        (
            [
id] => 3
            
[coincidencias] => 1
        
)

    [
2] => Array
        (
            [
id] => 4
            
[coincidencias] => 1
        
)

    [
3] => Array
        (
            [
id] => 5
            
[coincidencias] => 1
        
)

    [
4] => Array
        (
            [
id] => 2
            
[coincidencias] => 2
        
)

    [
5] => Array
        (
            [
id] => 3
            
[coincidencias] => 2
        
)


Entonces como se daran cuenta en cada uno de ellos hay un id y un campo coincidencias como veran el hay arrays en los que se repite el id por ejemplo el array 0 y el array 4 tienen el mismo id pero diferente coincidencia lo que yo quiero hacer es recorrer todo el array y donde encuentre id que sea igual a otro eliminar el que tenga el menor valor de coincidencia. y que por ejemplo solo quede asi
Código PHP:
Array
(
    [
0] => Array
        (
            [
id] => 4
            
[coincidencias] => 1
        
)

    [
1] => Array
        (
            [
id] => 5
            
[coincidencias] => 1
        
)

    [
2] => Array
        (
            [
id] => 2
            
[coincidencias] => 2
        
)

    [
3] => Array
        (
            [
id] => 3
            
[coincidencias] => 2
        
)


Desde ya les voy dando gracias por todas las opiniones y ayuda que puedan darme.
Erick.

Hola,
Para esto puede usar la función array_splice() revisala.

El array contenedor tienes que meterlo en un for recurriendolo y dentro del for poner una condición if para verificar si el id es igual al siguiente id y asi...
Si se cumple aplicas el array_splice().
  #5 (permalink)  
Antiguo 08/07/2011, 07:30
 
Fecha de Ingreso: diciembre-2010
Ubicación: Perú
Mensajes: 18
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Manejo de Arrays

jeje gracias de nuevo por tu pronta respuesta, creeme que le estoy dando vueltas y vueltas y no doy jeje ! podrian poner un ejemplo similar a mi problema?
  #6 (permalink)  
Antiguo 08/07/2011, 09:14
 
Fecha de Ingreso: mayo-2010
Mensajes: 84
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: Manejo de Arrays

Cita:
Iniciado por CoericK Ver Mensaje
jeje gracias de nuevo por tu pronta respuesta, creeme que le estoy dando vueltas y vueltas y no doy jeje ! podrian poner un ejemplo similar a mi problema?
Código PHP:


$arraycontenido 
= array(array("id" => 2"coincidencias" => 1), array("id" => 3"coincidencias" => 1), array("id" => 3"coincidencias" => 1), array("id" => 5"coincidencias" => 1), array("id" => 6"coincidencias" => 1));

print_r($arraycontenido);

for(
$n=0$n<count($arraycontenido); $n++){
    
     for(
$i=$n+1$i<(count($arraycontenido)-1); $i++){
         if(
$arraycontenido[$n]['id'] == $arraycontenido[$i]['id'])
            
array_splice($arraycontenido$i1);
        
     }
    
    
}

echo 
"Resultado después: <br /><br /><br />";

print_r($arraycontenido); 
Revisalo.
  #7 (permalink)  
Antiguo 08/07/2011, 09:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Manejo de Arrays

Cita:
Iniciado por pateketrueke Ver Mensaje
Se me ocurre lo siguiente:

- Ordena el arreglo con las coincidencias menores en primer orden.
- Itera tu array; por cada ítem agregas en un array auxiliar una copia del mismo.

La técnica consiste en usar el numero de id como indice en el arreglo auxiliar, asi se va sobreescribiendo quedando solo el mayor.
Bien, acabo de ejemplificar lo que mencionaba:
Código PHP:
<pre><?php

$arraycontenido 
= array(array("id" => 2"coincidencias" => 3), array("id" => 3"coincidencias" => 2), array("id" => 3"coincidencias" => 1), array("id" => 5"coincidencias" => 4), array("id" => 6"coincidencias" => 2));

print_r($arraycontenido); // array original


usort($arraycontenido, function($a$b)
{
  return 
$a['coincidencias'] == $b['coincidencias'] ? : ( $a['coincidencias'] < $b['coincidencias'] ? -1);
});


print_r($arraycontenido); // array ordenado


$auxiliar = array();


foreach (
$arraycontenido as $one)
{
  
$auxiliar[$one['id']] = $one;
}


sort($auxiliar);

print_r($auxiliar); // array filtrado


?></pre>
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: arrays, manejo
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 13:58.