Foros del Web » Programando para Internet » PHP »

Ver valores de un array con keys sacadas de otro array

Estas en el tema de Ver valores de un array con keys sacadas de otro array en el foro de PHP en Foros del Web. Hola, necesito su ayuda nuevamente, me excuso por el titulo, no sabía como expresar mi problema en pocas palabras. tengo 2 arrays (si, sigo con ...
  #1 (permalink)  
Antiguo 19/01/2010, 09:07
 
Fecha de Ingreso: enero-2010
Mensajes: 62
Antigüedad: 14 años, 10 meses
Puntos: 1
Ver valores de un array con keys sacadas de otro array

Hola, necesito su ayuda nuevamente, me excuso por el titulo, no sabía como expresar mi problema en pocas palabras.

tengo 2 arrays (si, sigo con los arrays XDDD ) uno con numeros y el otro con palabras que se van llenando solos.

(esos son solo ejemplos)
$numeros = array(1,2,1,4,1,6);
$palabras = array(a,b,c,d,a,f);

por cada numero hay una palabra, en la misma llave de los numeros está la palabra

extraje los numeros repetidos y la linea donde estan.
algo así

1 => está en las líneas 0 2 4
2 => está en las líneas 1
etc...

Entonces, necesito buscar esas líneas en el array de las palabras para que me muestre algo como esto

1 => contiene las palabras
a
c
a

(no importa si están repetidas las palabras)

En esto me he quedado, intento hacer un array_intersect_keys pero me devuelve las llaves y yo necesito el valor, no sé como hacerlo y ya se me secó el cerebro u.u

Código PHP:
<html>

<head>
  <title></title>
</head>


<?php
$texto 
=  "texto\en-2-2.txt";
$handle = @fopen($texto"r");
$array_TgrpA = array();
$array_number = array();

if (
$handle) {
    while (!
feof($handle))
    {

        
$buffer fgets($handle);
        
//busco la posición en el texto de los números
        
$TgrpA substr("$buffer",16);
        
$number substr("$buffer"1073);
        
//lleno el array con los datos
        
array_push($array_TgrpA$TgrpA);
        
array_push($array_number$number);
       }
    
$array_count_number array_count_values($array_number);  //muestra cuantas veces se repite el mismo valor
    
$array_keys_number array_keys($array_count_number);   // muestra las llaves de los numeros buscados con $array_count_number
    
print "<br>";
    
$array_keys_TgrpA =array_keys($array_TgrpA); //muestra las keys de TgrpA
    
print "<br>";
        for(
$i 1$i <= count($array_count_number); $i += 1)
         {
             
print_r (current($array_keys_number));
             echo 
" se repite en las siguientes lineas = ";
             
print_r ($result_number = (array_keys($array_number,current($array_keys_number)))); //muestra las lineas donde se repite
             
next($array_keys_number);
             echo 
" = ";
             print 
"<br>";
         }
    
fclose($handle);
    echo 
'<br>';
    }
?>


</body>

</html>
  #2 (permalink)  
Antiguo 19/01/2010, 09:46
Avatar de julianmejio  
Fecha de Ingreso: agosto-2005
Ubicación: Medellín, Antioquia
Mensajes: 88
Antigüedad: 19 años, 2 meses
Puntos: 3
Respuesta: Ver valores de un array con keys sacadas de otro array

Bueno, tal vez estas dos funciones te ayuden a solucionar tu problema:
Están dentro de una implementación para comprenderlas mejor.

Código PHP:
$numeros = array(121416);
$palabras = array('a''b''c''d''a''f');

/**
 * Obtiene los valores con el número índice.
 * @param int $NumeroIndice Número índice en el arreglo de números.
 * @param int[] $Numeros Arreglo con los números.
 * @param String[] $Palabras Palabras.
 */
function obtenerValores($NumeroIndice$Numeros$Palabras)
{
    
$resultado = array();
    for(
$i 0$i count($Numeros); $i++)
        if(
$Numeros[$i] == $NumeroIndice// Si coincide el índice con el número índice requerido
            
$resultado[] = $Palabras[$i]; // Agregar la palabra correspondiente en el resultado.
    
return $resultado;
}

/**
 * Obtiene las ubicaciones con el índide igual.
 * @param int $NumeroIndice Número de índice buscado.
 * @param int[] $Numeros Arreglo con los números índice.
 * @return int[] Devuelve un arreglo con la ubicación de los números índice.
 */
function obtenerUbicacionIguales($NumeroIndice$Numeros)
{
    
$resultado = array();
    for(
$i 0$i count($Numeros); $i++)
        if(
$Numeros[$i] == $NumeroIndice// Si el número índice buscado es igual al índice en la posición actual
            
$resultado[] = $i// Agregar la posición / ubicación en el resultado.
    
return $resultado;
}

// Número índice
$numeroIndice 1;

// Obtener el arreglo con las ubicaciones que tienen el número índice.
$ubicacionLineas obtenerUbicacionIguales(1$numeros);

// Obtener las palabras asociadas con el número índice.
$letrasIndice obtenerValores($numeroIndice$numeros$palabras);

// [Lógica de estilo] Crear una cadena imprimible que contenga las posiciones con el número índice.
$strUbicacionLineas '';
foreach(
$ubicacionLineas as $ubicacionLinea)
    
$strUbicacionLineas .= " $ubicacionLinea";


// Imprimir el resultado.
echo "$numeroIndice => está en las líneas $strUbicacionLineas<br/>";
echo 
"$numeroIndice => contiene las palabras:<br />";
foreach(
$letrasIndice as $letraIndice)
    echo 
"$letraIndice<br />";

/**
 * Devuelve:
 * 1 => está en las líneas 0 2 4
 * 1 => contiene las palabras:
 * a
 * c
 * a
 */ 
  #3 (permalink)  
Antiguo 19/01/2010, 09:58
 
Fecha de Ingreso: enero-2010
Mensajes: 62
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Ver valores de un array con keys sacadas de otro array

gracias por la ayuda, lo probaré ahora mismo y te cuento si funcionó
  #4 (permalink)  
Antiguo 19/01/2010, 14:06
 
Fecha de Ingreso: enero-2010
Mensajes: 62
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Ver valores de un array con keys sacadas de otro array

Hola, me sirvió de mucho las funciones que me pasaste para ordenarme un poco
ahora saqué los valores, pero solo me muestra el primero

Sé que me falta algo pero no tengo idea que es.

esto fue lo que agregué dentro del primer for

Código PHP:
for($i_2 1$i_2 <= count($array_keys_TgrpA); $i_2 += 1)
        {
        if(
$array_keys_TgrpA[$i_2] == $array_key_number// Si el número índice buscado es igual al índice en la posición actual
           
{
               print 
' y estas son las palabras  ';

            
print_r (current($array_TgrpA));
            
next($array_TgrpA);
           }
         } 

Etiquetas: keys, ver
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 12:34.