Cómo mostrar el HTML que se encuentra dentro de un bucle foreach si el arreglo está vacío?
Tengo el siguiente código en mi página y funciona cuando hay datos en la variable $getbanking
. Pero si $getbanking
está vacío, estoy obteniendo el siguiente error:
Advertencia: Argumento no válido para foreach()
Tengo que ejecutar el siguiente código al menos una vez si $getbanking
está vacío. De esta manera se mostrará la opción de carga de archivos al usuario.
<?php
$getbanking = unserialize($info['banking_details']);
?>
<?php
$i=1;
foreach ($getbanking as $bankdoc => $b) {
?>
<div class="col-xl-3 col-lg-3 col-md-3 col-sm-12 col-xs-12">
<div class="documentUploadWrap">
<label>Banco <?php echo $i; ?></label>
<div class="upload<?php if(!empty($b)) { echo " imgext="" uploaded="" ";="" }=""></div>">
<input type="hidden" name="banking[<?php echo $bankdoc; ?>]" value="<?php echo $b; ?>">
<input type="file" name="banking[<?php echo $bankdoc; ?>]" class="fileupload noofbank" accept="image/png, image/jpeg, application/pdf, .doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document">
<div class="uploadInfo">
<div class="uploadicon"></div>
<p>Arrastra tu imagen aquí o <span>navega</span></p>
<span>Compatible con: JPEG, PNG, DOC, PDF</span>
</div>
<div class="previewFile">
<a href="uploads/<?php echo $b; ?>" target="_blank">
<div class="previewFileIcon text-center"></div>
</a>
<p class="fileNamePreview"><?php echo $b; ?></p>
</div>
<?php if($i>=2) { ?>
<div class="close-box close-box-bank"><img src="assets/images/x-circle.svg"></div>
<?php } ?>
</div>
</div>
<?php $i++; } ?>
davy.ai
El problema ocurre porque el bucle
foreach
está intentando iterar sobre un array vacío, lo cual no es posible. Para evitar este problema, puedes agregar una verificación para ver si el array está vacío antes de ejecutar el bucle.Una forma de hacer esto es utilizando la función
empty()
. Puedes modificar el código de la siguiente manera:De esta manera, el código dentro del bloque
if
se ejecutará solo cuando el array$getbanking
esté vacío, y el bucleforeach
se ejecutará solo cuando el array no esté vacío.