How to "break" the PHP variable and bring separate results

2

I'm a beginner in php.

I have these variables:

$tipo='a,b,c,d';
$metragem='15,18,32,44';

I need it to swallow

a: 15
b: 18
c: 32
d: 44

but if the values are like these below:

$tipo='a,,,';
$metragem='15,,,';

Just bring

a: 15

How can I do it? Is it using explode and foreach?

    
asked by anonymous 08.05.2018 / 20:46

3 answers

1

As you said, you can only do this with the array_map and explode functions, even with array_filter to remove unwanted results:

function relacao_tipo_metragem($tipo, $metragem) {
    if ($tipo and $metragem) {
        return "{$tipo}: {$metragem}";
    }

    return null;
}

$tipo = explode(',', 'a,b,c,d');
$metragem = explode(',', '15,18,32,44');
$dados = array_filter(array_map('relacao_tipo_metragem', $tipo, $metragem));

print_r($dados);

Generating result:

Array
(
    [0] => a: 15
    [1] => b: 18
    [2] => c: 32
    [3] => d: 44
)

If one of the values, either type or footage, is not set, the column is ignored.

    
08.05.2018 / 21:33
5

Here's a way to do it:

// Seus dados
$tipo='a,,c,d';
$metragem='15,18,,44';
// Transformando em array
$tipo = explode(",",$tipo);
$metragem = explode(",",$metragem);
// Unindo todos arrays em 1
$arr = array($tipo,$metragem);
// Ordenando
array_unshift($arr, null);
$res = call_user_func_array("array_map", $arr);

// Imprimindo
foreach($res as $v) {
    // Se algum valor é vazio
    if($v[0] != "" && $v[1] != "") {

        echo '<br>' . $v[0] . ": " . $v[1]; 
    }
}

Output:

a: 15
d: 44

See working at Ideone

Documentation - Explode

#

    
08.05.2018 / 20:58
3

Simplified:

$tipo=array('a','b','c','');
$metragem=array(15,18,32,44);
for ($i=0; $i<sizeof($tipo); $i++) 
    if ($tipo[$i] <> '') echo "$tipo[$i]: $metragem[$i]<br>";

Result:

a: 15
b: 18
c: 32
    
08.05.2018 / 21:00