PHP - Elementos repetidos en un array

   
Vista:

Elementos repetidos en un array

Publicado por esther (5 intervenciones) el 16/04/2017 18:30:56
Tengo este array que con la función array_count_values me da el siguiente resultado: Array ( [2] => 1 ) Array ( [2] => 1 ) Array ( [2] => 1 ) Array ( [2] => 1 ) Array ( [2] => 1 ) Array ( [5] => 1 ) Array ( [5] => 1 )

Quiero hacer es coger los números que se repiten y salga como resultado 2^5 X 5^2 . Es decir dos elevado a cinco por cinco elevado a dos.

Si alguien me puede ayudar gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Elementos repetidos en un array

Publicado por kip (863 intervenciones) el 16/04/2017 18:54:58
Hola, puedes colocar la estructura del array sin la funcion array_count_values() ??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Elementos repetidos en un array

Publicado por esther (5 intervenciones) el 16/04/2017 19:54:23
Hola gracias por responderme. Te voy a explicar un poco que quiero hacer. Trato de hacer la factorización de un número por ejemplo de 8 sus divisores son 2x2x2. Con un bucle while he calculado los divisores, luego si en mi programa pongo 8 me saldria 2 2 2. Lo que quiero hacer es poner por ejemplo 8= 2^3 asi directamente y por eso el resultado de cada iteracion del bucle lo voy guardando en un array. No se si hay un método mas facil, pero no se como seguir.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Elementos repetidos en un array

Publicado por kip (863 intervenciones) el 16/04/2017 20:57:23
Entiendo, podrias por favor colocar tu codigo ?

Lo que se me ocurre es usar array_count_values() para enviar el array de los divisores, por ejemplo:

1
2
3
4
5
6
7
$divisores= array(2, 2, 2);
$valores = array_count_values($divisores);
$base_exponente = array();
foreach ($valores as $base => $exp) {
    $base_exponente[] = sprintf('%d^%d', $base, $exp);
}
echo implode(' ', $base_exponente);

Mostraria:

1
2^3

Otro ejemplo:

1
2
3
4
5
6
7
$divisores= array(2, 2, 2, 5, 5);
$valores = array_count_values($divisores);
$base_exponente = array();
foreach ($valores as $base => $exp) {
    $base_exponente[] = sprintf('%d^%d', $base, $exp);
}
echo implode(' ', $base_exponente);

1
2^3 5^2

Es aquello lo que buscas ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Elementos repetidos en un array

Publicado por esther (5 intervenciones) el 16/04/2017 21:25:25
Gracias por responder. Lo miro mañana porque hoy me es imposible pero ya te digo algo con lo que sea
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Elementos repetidos en un array

Publicado por esther (5 intervenciones) el 17/04/2017 17:29:08
Hola intente como decias pero no sale te mando mi codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
 
 
$divisor = 2;
 
$datos = array();
 
while($numero != 1) {
 
    if($numero % $divisor == 0){
 
        @$divisores .= $divisor."</br>";
        @$divisoress .='&nbsp'.$divisor;
 
        $numero = $numero / $divisor;
 
        @$numeros.=$numero."</br>";
 
        $datos['$divisor'] = $divisor;
        print_r(array_count_values($datos));
 
 
    }else {
 
        $divisor++;
 
    }
 
}
 
?>
el resultado tendria que ser por ejemplo si introduces 800 te tiene que salir:
800=(2)5 * (5)2
es decir dos elevado a cinco por cinco elevado a dos. Gracias por ayudarme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Elementos repetidos en un array

Publicado por kip (863 intervenciones) el 19/04/2017 03:30:25
Intenta con esto, es una modificacion de tu codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$numero = 800;
$divisor = 2;
$datos = array();
while($numero != 1) {
    if($numero % $divisor == 0) {
        $numero = $numero / $divisor;
        $datos[] = $divisor;
    }else {
        $divisor++;
    }
}
 
$base_exp = array_count_values($datos);
$resultado = array();
 
foreach ($base_exp as $base => $exp) {
    $resultado[] = sprintf('%d^%d', $base, $exp);
}
 
echo implode(' ', $resultado);

Pruebalo y nos cuentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Elementos repetidos en un array

Publicado por esther (5 intervenciones) el 19/04/2017 16:16:32
Perfecto, es lo que queria que mostrase. Solo modifique esto:

1
2
3
$resultado[] = sprintf('(%d)<sup>%d</sup>', $base, $exp);
 
$potencia= implode('· ', $resultado);

para que el resultado saliera asi: 8000 = (2)6· (5)3

muchas gracias por ayudarme. Besos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad