PHP - guardar bucle en un array php

   
Vista:

guardar bucle en un array php

Publicado por efren (22 intervenciones) el 31/08/2016 01:19:34
hola amigos nos e si el titulo sea el correcto, pero tengo la siguiente duda:

tengo en mysql una tabla llamada camp con las columnas id, paises

actualmente hay 8 filas

en paises los guardo de esta manera
Argentina,
Chile,
Colombia,
Spain,
Mexico,
Panama,
Peru,
Uruguay,

quiero sacar todos los paises sin que se repitan ya que hay filas como esta:
paises:

Argentina,
Chile,
Colombia,
Spain,
Mexico,
Panama,
Peru,
Uruguay,
Portugal,
Honduras

como puedes ver esta algunos paises ya antes pero hay nuevos como portugal y honduras

tengo esto
1
2
3
4
$q = $db->query("SELECT paises FROM camp");
while ($row = $db->fetch_array($q)) {
 var_dump($row);
}

lo cual me devuelve

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
array (size=1)
  'paises' => string 'Argentina,
Chile, 
Colombia,  
Spain,  
Mexico,  
Panama, 
Peru,  
Uruguay,' (length=77)
 
array (size=1)
  'paises' => string 'Argentina,

Chile, 

Colombia,  

Spain,  

Mexico,  

Panama, 

Peru,  

Uruguay,
Honduras,
Portugal,

Venezuela,' (length=96)
 
array (size=1)
  'paises' => string 'Argentina,

Chile, 

Colombia,  

Spain,  

Mexico,  

Panama, 

Peru,  

Uruguay,

Venezuela,' (length=96)

pero quiero unirlos todos en un solo array algo como esto

1
2
3
4
5
6
7
8
9
array(
	"paises" => "Argentina,
Chile, 
Colombia,  
Spain,  
Mexico,  
Panama, 
Peru,  
Uruguay, Honduras, Portugal");


si alguien me puede ayudar, lo que quiero es saber cuantos paises hay en total e imprimirlos sin que se repitan
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

guardar bucle en un array php

Publicado por kip (828 intervenciones) el 31/08/2016 01:55:02
Hola, si deseas guardarlos seria de esta forma:

1
2
3
4
5
6
7
8
9
<?php
$q = $db->query("SELECT paises FROM camp");
while ($row = $db->fetch_array($q)) {
	$paises[] = $row['paises'];
}
$paises = array_unique($paises);
$paises_array = [ 'paises' => $paises ];
var_dump($paises_array);
?>

Lo que tendrias alli es un array bidimensional, es decir la variable $paises_array que es un array tendra un indice cuyo valor es otro array.

Si lo que deseas es tener un indice cuyo valor sea un string que contenga los paises separados por '','', seria algo asi:

1
2
3
4
5
6
7
8
9
<?php
$q = $db->query("SELECT paises FROM camp");
while ($row = $db->fetch_array($q)) {
	$paises[] = $row['paises'];
}
$paises = array_unique($paises);
$paises_array = [ 'paises' => implode(',',$paises) ];
var_dump($paises_array);
?>

Si te fijas en ambos casos use la funcion array_unique() que provee PHP para eliminar valores duplicados de un array, cabe recalcar que si un valor es 'Uruguay' y otro 'uruguay', la funcion no hara lo que se espera, ya que hace una comparacion exacta y ambos string tiene una pequeña diferencia que es la primera letra.

Pruebalo y nos cuentas.

Saludos
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

guardar bucle en un array php

Publicado por efren (22 intervenciones) el 31/08/2016 03:21:16
Q tal amigo gracias por responder, haciendo el implode obtengo el string pero me devuelve valores repetidos es como array_unique no hiciera su funcion

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
array (size=1)
  'paises' => string 'Argentina,
Chile, 
Colombia,  
Spain,  
Mexico,  
Panama, 
Peru,  
Uruguay,,Argentina,  

Chile, 

Colombia,  

Spain,  

Mexico,  

Panama, 

Peru,  

Uruguay,

Venezuela,,Argentina,  
Chile, 
Colombia,  
Spain,  
Mexico,  
Panama, 
Peru,  
Uruguay,
Venezuela,
Ecuador,Argentina,  

Chile, 

Colombia,  

Spain,  

Mexico,  

Panama, 

Peru,  

Uruguay,

Venezuela,

Ecuador' (length=377)
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

guardar bucle en un array php

Publicado por kip (828 intervenciones) el 31/08/2016 03:39:03
Puedes colocar como lo estas haciendo? De seguro algo estas pasandolo por alto.
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

guardar bucle en un array php

Publicado por efren (22 intervenciones) el 31/08/2016 03:43:13
esto tal cual tu indicas

1
2
3
4
5
6
7
8
$q = $db->query("SELECT paises FROM camp");
while ($row = $db->fetch_array($q)) {
	$paises[] = $row['paises'];
}
 
$paises = array_unique($paises);
$paises_array = [ 'paises' => implode(',',$paises) ];
var_dump($paises_array);

y me esta devolviendo esto

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
array (size=1)
  'paises' => string 'Argentina,
Chile, 
Colombia,  
Spain,  
Mexico,  
Panama, 
Peru,  
Uruguay,,Argentina,  

Chile, 

Colombia,  

Spain,  

Mexico,  

Panama, 

Peru,  

Uruguay,

Venezuela,,Argentina,  
Chile, 
Colombia,  
Spain,  
Mexico,  
Panama, 
Peru,  
Uruguay,
Venezuela,
Ecuador,Argentina,  

Chile, 

Colombia,  

Spain,  

Mexico,  

Panama, 

Peru,  

Uruguay,

Venezuela,

Ecuador' (length=377)
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

guardar bucle en un array php

Publicado por kip (828 intervenciones) el 31/08/2016 04:12:26
Ya veo, eso sucede porque no mencionaste que hay registros en tu tabla que contienen un string continuo de paises separados por comas, crei que contenia un pais por cada fila, hice un pequeño codigo para ayudarte sabiendo ahora lo que tiene cada fila, a ver si te funciona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$q = $db->query("SELECT paises FROM camp");
while ($row = $db->fetch_array($q)) {
	if(strstr($row['paises'],',')){
		$temp_var = explode(',',$row['paises']);
		foreach ($temp_var as $value) {
			$paises[] = trim($value);
		}
	} else {
		$paises[] = $row['paises'];
	}
}
$paises = array_unique($paises);
$paises_array = [ 'paises' => implode(',',$paises) ];
var_dump($paises_array);
?>

Pruebalo y nos dices si te funciona.
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

guardar bucle en un array php

Publicado por efren (22 intervenciones) el 31/08/2016 04:57:24
Ahora si funciona de esa manera, solo vi que agrega una como de mas, imprime esto

1
2
array (size=1)
  'paises' => string 'Argentina,Chile,Colombia,Spain,Mexico,Panama,Peru,Uruguay,,Venezuela,Ecuador' (length=76)
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

guardar bucle en un array php

Publicado por kip (828 intervenciones) el 31/08/2016 05:26:13
Intenta haciendo un filtro para eliminar los valores vacios del array, ya que de debe a un valor vacio de este, reemplaza esto a la linea que corresponde:

1
$paises = array_unique(array_filter($paises));
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

guardar bucle en un array php

Publicado por efren (22 intervenciones) el 01/09/2016 15:47:08
ahora si amigo :) .. Gracias por tu ayuda sos grande. éxitos y bendiciones.
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