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 № 1Você 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 "-";
}
}