/ / Implode com valor padrão se não houver valores - php

Implodir com valor padrão se não houver valores - php

Eu quero mostrar traço (-) se minha matriz está vazia depois de implodi-lo. Aqui abaixo é minha tentativa até agora.

Resultado com dados em matriz -> https://repl.it/HIUy/0

<?php

$array = array(1,2);
$result = array();
foreach ($array as $curr_arr) {

$result[] = $curr_arr;
}
echo "Array With Data - " .  implode(",", $result);
//Result : Array With Data : 1,2
?>

Resultado sem dados na matriz -> https://repl.it/HIVE/0

<?php

$array = array();
$result = array();
foreach ($array as $curr_arr) {

$result[] = $curr_arr;
}
echo "Array Without Data - " .  implode(",", $result);
//Result : Array With Data - :
?>

Como você pode ver no segundo resultado, não consigo imprimir nada, pois minha matriz estava em branco, portanto, não consegui imprimir nada.

No entanto, quero imprimir Traço(-) usando implode apenas usando algo como array_filter que eu já tentei, mas não consigo fazer isso. Aqui eu tentei isso https://repl.it/HIVP/0

<?php

$array = array();
$result = array();
foreach ($array as $curr_arr) {

$result[] = $curr_arr;
}
echo "Array With Data : " .  implode(",", array_filter($result));
//Result : Array With Data :
?>

Alguém pode me orientar como conseguir isso?

obrigado

Respostas:

3 para resposta № 1

Você pode verificar se sua matriz está vazia e, em seguida, retornar / ecoar um traço:

if(!empty($array)){
// Array contains values, everything ok
echo "Array with data - " . implode("yourGlueHere", $array);
} else {
// Array is empty
echo "Array without data -";
}

Se você quiser tê-lo em uma linha, você poderia fazer algo como o seguinte:

echo "Array with" . empty($array) == false ? "" : "out" . "data - " . empty($array) == false ? implode("glue", $array) : "";

0 para resposta № 2

Respostas postadas por Tobias F. e Gopi Chand estão corretas.

Abordagem 1:
Eu sugiro que você vá desta forma iria ajudá-lo (Basicamente, usando o operador ternário). Como aqui não há outra maneira de fazer isso usando apenas implodir função.

echo empty($result) ? "-" : implode(",",$result);

Abordagem 2
Usando uma função auxiliar como esta.

function myImpllode($glue = "", $array = [])
{
if(!empty($array)){
// Array contains values, everything ok
return implode($glue, $array);
} else {
// Array is empty
return "-";
}
}