Aquí quiero eliminar la última matriz de abajo (esta es siempre la última matriz que se establece dinámicamente):
array(1) { ["file-1573204001988"]=> array(3) { [0]=> array(5) { ["name"]=> string(7) "abc.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(14) "/tmp/phpdl81UY" ["error"]=> int(0) ["size"]=> int(72761) } [1]=> array(5) { ["name"]=> string(12) "profiles.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(14) "/tmp/phptIFS1J" ["error"]=> int(0) ["size"]=> int(16178) } [2]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } } }Quiero eliminar toda la matriz debajo de arriba (cuando tiene un nombre vacío):
[2]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) }¿Cómo es esto posible? Lo intenté con array_pop, unset y otras funciones php predefinidas, pero no obtuve el resultado correcto. Por favor, ayúdenme a alcanzar el valor correcto. Gracias de antemano.
Si está intentando eliminar persistentemente el último elemento dentro de la matriz, puede usar array_pop .
array_pop() aparece y devuelve el valor del último elemento de la matriz, acortando la matriz en un elemento.
$myArray = array( 0 => "hello", 1 => "world", 2 => "remove me", ); array_pop($myArray); // Removes [2] from the array above.En tu caso, simplemente harías:
array_pop($array["file-1573204001988"]);Un bucle foreach simple con una prueba simple hará esto por usted
foreach ($arr['file-1573204001988'] as $key=>$a){ if ( $a['name'] = '' ){ unset($arr['file-1573204001988'][$key]); } }Estos parecen elementos de la matriz $_FILES . En lugar de verificar el nombre, recomendaría verificar el valor del error y filtrar cualquier cosa que no UPLOAD_ERR_OK o 0
$valid_files = array_filter($arr["file-1573204001988"], fn($item) => $item['error'] === UPLOAD_ERR_OK);