PHP - Dividir array en variables

   
Vista:

Dividir array en variables

Publicado por Adrian (4 intervenciones) el 05/06/2017 19:42:34
Buenas a todos, yo tengo un array que se llena de la ejecucion de un programa y lo que quiero es dividir el array en varios para ordenarlos:

$salida= shell_exec('programa'); //$salida contiene |-,papa,grande -,mama,pequeño| en este caso, pero podrían ser más o menos los papa que podrían ser

yo quiero que se divida en:

ID---------FAMILIAR-------TAMAÑO //los guiones son espacios

- ---------papa--------------grande //Quedaría así ordenado

- --------mama-----------pequeño

Yo había intentado así pero no me sale:

1
2
3
4
list($id, $familiar, $tamaño) = explode(",", $salida);
echo $id;
echo $familiar;
echo $tamaño;

Al hacer esto me muestra esto:

-papagrande

Como pdría hacer un bucle para que me saliese todo ordenado? 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 [abZeroX]

Dividir array en variables

Publicado por [abZeroX] (87 intervenciones) el 06/06/2017 00:35:28
Hola, no me queda muy clara cual es tu idea ni tampoco cual es la salida de la primera linea, no se si es
esto
1
|-,papa,grande,-,mama,pequeño|

o esto
1
-,papa,grande,-,mama,pequeño

Pero igual hice un pequeño código capaz sirva de algo, de no ser así coméntanos con más detalle.
1
2
3
4
5
6
7
8
9
10
11
12
<?php
	$salida = explode(',', shell_exec('cat programa'));
 
	$i = 0;
	while ($i < count($salida)/3) {
		$id = str_replace('|', '', each($salida)[1]);
		$familiar = str_replace('|', '', each($salida)[1]);
		$tamano = str_replace('|', '', each($salida)[1]);
 
		echo $id.' '.$familiar.' '.$tamano.'<br>';
		$i++;
	}
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

Dividir array en variables

Publicado por kip (828 intervenciones) el 06/06/2017 02:03:29
Hola, si no usaras mas estas variables y simplemente deseas mostrarlas, el codigo de abZeroX va muy bien, si deseas tener por otro lado una variable con cada valor de ID, FAMILIAR, TAMAÑO de una forma ordenada puede servirte este codigo:

1
2
3
4
5
6
7
$retorno = explode(',', '-,papa,grande,-,mama,pequeño');
$valores = array();
 
while($retorno) {
    list($id, $familiar, $tamaño) = array_splice($retorno, 0, 3);
    $valores[] = array('ID' => $id, 'FAMILIAR' => $familiar, 'TAMAÑO' => $tamaño);
}

De esa forma en valores tendras un array con otros arrays como tantos valores hayas obtenido del retorno de shell_exec (yo coloque un string basado en tu ejemplo).

Puedes mostrar los valores asi:

1
2
3
foreach ($valores as $valor) {
    vprintf("ID: %s FAMILIAR: %s TAMAÑO: %s\n", $valor);
}

O asi:

1
2
3
foreach ($valores as $valor) {
    echo "ID: {$valor['ID']} FAMILIAR: {$valor['FAMILIAR']} TAMAÑO: {$valor['TAMAÑO']}\n";
}

En ambos casos obtendras algo asi:

1
2
ID: - FAMILIAR: papa TAMAÑO: grande
ID: - FAMILIAR: mama TAMAÑO: pequeño

Si usaras el de abZeroX y quieres mantenerlas, simplemente crea una variable y almacena un array con $id, $familiar, $tamano por cada inicio del bucle como otro valor de este array.
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