
Você monta um array de quantidades, roda array_filter($valores) pra tirar os campos vazios e percebe que a quantidade 0 sumiu junto. Não é bug do PHP 8.3: sem callback, o array_filter descarta tudo que é falsy — o 0, o 0.0, a string '0', a string vazia, o null, o false e o array vazio.
O segundo argumento resolve em uma linha. Na maioria dos casos eu quero derrubar só null e string vazia, mantendo o zero:
$valores = [10, 0, '', null, '0', 5, false];
$limpo = array_filter($valores, fn($v) => $v !== null && $v !== '');
// sobram 10, 0, '0', 5 e false
// se o false também tiver que sair:
$limpo = array_filter($valores, fn($v) => $v !== null && $v !== '' && $v !== false); A versão sem callback só converte cada item pra booleano, e em PHP zero é falso. Por isso somem sempre os mesmos campos: quantidade, saldo, desconto, nota — os que valem 0 com frequência.
Quando o critério depende do nome do campo, passe a flag ARRAY_FILTER_USE_BOTH e receba valor e chave, nessa ordem:
$campos = ['nome' => 'Roger', 'qtd' => 0, '_token' => 'abc', 'obs' => ''];
$limpo = array_filter(
$campos,
fn($v, $k) => $v !== '' && !str_starts_with($k, '_'),
ARRAY_FILTER_USE_BOTH
);
// ['nome' => 'Roger', 'qtd' => 0] Última pegadinha: o array_filter preserva as chaves originais. Num array de lista isso deixa índices 0, 2, 5 e o json_encode passa a devolver um objeto em vez de um array. Se a saída vira JSON, envolva em array_values() antes de responder.
Allowed memory size exhausted no painel: qual das duas constantes do wp-config.php mexer, onde conferir o valor real e por…
strtotime com data brasileira devolve false e o INSERT quebra no MySQL 8. Use createFromFormat com getLastErrors antes de mandar…
O hash que o Magento mostra junto do erro é o nome de um arquivo em var/report. Veja como abrir,…
Seu snippet com woocommerce_checkout_fields parou de aparecer no checkout em blocos. Registre o campo pela API nova e leia o…
O pedido entrou às 21h e o relatório mostra 00h do dia seguinte. Onde setar date.timezone no PHP 8.3 e…
O pedido entra na loja e o e-mail nunca sai: antes de culpar o SMTP, veja o envio assíncrono, a…