Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

srnalim

[Array] Como verificar tipo em um array associativo?

Recommended Posts

Bom pessoal quebrando a cabeça aqui, e não querendo acreditar que vou ter que fazer gambi, pois o que to imaginando fazer pra que isso funcione nada me tira da cabeça que é gambiarra pois vai dar um pouquinho bom de código pra fazer uma coisa que a linguagem faz, enfim tenho o seguinte array

array( "numero" => 1, "telefone" => 3434, "nome" => sr nalim)

Blz agora eu faço o seguinte:

foreach(array as $keyArray => $value){
    $array[] = $keyArray."=".$value;
}

ele me retorna um novo array

array([0]=>numero=1,[1]=>telefone=3434,[2]nome=sr nalim)

só que eu quero pegar aquele $value dentro do foreach e verificar se ele é inteiro ou string dando um gettype($value) ele me diz que todos valores são strings.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que o problema é muito mais a tua estrutura de dados (que o array parece vir de um SGBD) do que o PHP em si. Veja só:

<?php

$array = ["numero" => 1 , "telefone" => 3434 , "nome" => "sr nalim"];
foreach($array as $value)
{
     printf("Variável (%s) %s \n" , gettype($value) , $value);
}

Saída:

Variável (integer) 1
Variável (integer) 3434
Variável (string) sr nalim


Não há problema algum com a função gettype. Mas veja que o valor, no seu array, "sr nalim" está sem apóstrofos, o que é impossível pois deve ser uma string. O que garante que os demais também não sejam basicamente strings?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postei um pouco incompleto eu acho... Bom o array é montado de uma query string, essa parte que mostrei já é uma parte meia que tratada, a string vem assim

numero=1&telefone=4343&nome=sr+nalim&codigo=

Assim eu pego e dou um explode("&",$queryString) assim tenho

array([0] => numero=1,[1] => telefone=3434, [2] nome=sr+nalim, [3] => codigo=)

eu vou tratar esse valor mais uma vez, montando um novo array, pois esse citado irá remover os parâmetros vazios na query string com array_filter, ficando igual ao da primeira forma que postei me fazendo chegar e esse erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o nome sugere "query string" são strings. Melhor que explode é utilizar o que o PHP dispõe: parse_str() ou parse_url().

Nesses casos, o que você pode fazer é validar e converter com is_numeric, ele vai fazer o cast type automaticamente para validar se a string é totalmente numérica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom, dei uma olhadas nas funções is_numeric funciona legal, acabei usando o ctype_digit e ficou legalzinho o filtro funcionando legal :) grato pela prontificação em ajudar, acabou que limpei bastante o código deixando ele menor pelas dicas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.