Ajuda pra pegar os dados de um INPUT como inteiro

Boa noite, eu recebo dados de um form via POST, e gostaria que alguns campos desse input fossem como inteiro, e quando dou um:

var_dump($_POST)

Ele retorna todos os dados como String, entre aspas duplas (que é o que eu preciso remover).

Basicamente o que eu precisava era retirar essas aspas duplas, mas sem precisar criar uma variável que recebe o que veio via POST e tals, gostaria de no controller trabalhar com o array inteiro que veio do POST, por exemplo:

$var = json_encode($_POST);

Um exemplo de json que eu precisaria seria mais ou menos isso:

$json_str = '{"nome":"Jason", "idade":38}';

E o que vem seria

$json_str = '{"nome":"Jason", "idade":"38"}';

Tentei o input number mas ele retorna o valor com aspas duplas tbm

<form method="POST" action="minhapagina.php> 
<input type="number" name="numero"/>
</form>

Eu poderia fazer assim:

$var = intval($_POST['numero'])

Mas se possível gostaria de trabalhar sem criar essas variáveis, somente com o $_POST que é o meu formulário dentro de um array;

Essas aspas me atrapalham na hora de converter o array em JSON, pq no JSON alguns campos se eu mandar com aspas dá erro, tentei converter tudo pra inteiro com JSON_NUMERIC_CHECK, mas dai os campos Strings dão erro pq vão sem as aspas

Se alguém já se bateu com isso, agradeço se puder me mostrar o caminho

O problema eh que tudo que vem da tela é texto. O que acontece é que algumas libs que geralmente fazem o meio de campo entre a tela e a controladora executa a conversão de automaticamente de acordo com o tipo da propriedade que irá recebê-la.

Não sei como é no PHP, mas em java, qdo usamos alguma framework, como Spring por exemplo, se um campo do form está vinculado com uma propriedade Number, o valor será transformado ao ser atribuído para o campo.

No mesmo exemplo de java web, sem usar frameworks, a transformação deve ser feita manualmente mesmo pois, como já disse, tudo que vem da tela é texto mesmo. Talvez tenha alguma mecanismo no PHP que já faça esse trabalho para você, ou terá que montar algo para tratar isso vc msm.

Ué, eu testei aqui e não deu esse problema.

Fiz assim:

<form method="POST" action="teste.php"> 
  Nome: <input type="text" name="nome"/>
  Idade: <input type="number" name="idade"/>
  <button>OK</button>
</form>

<?php

if (isset($_POST['nome'])) {
    echo json_encode($_POST, JSON_NUMERIC_CHECK);
}

Preenchi o nome “Jason” e a idade “38”, e o resultado foi:

{"nome":"Jason","idade":38}
1 curtida