Eu só preciso verificar se uma matriz tem mais de um elemento. Eu estou tentando fazer desta maneira:
if (isset($arr['1']))
a outra maneira tradicional é
if (sizeof($arr)>1)
Qual dos dois é melhor? Em tais situações, como devo julgar entre dois métodos alternativos? Existe algum medidor de verificação de desempenho disponível para medir qual é o melhor?
Respostas:
Usa isto
Ou
sizeof()
é um alias paracount()
, eles funcionam da mesma maneira.Editar: Respondendo à segunda parte da pergunta: As duas linhas de códigos da pergunta não são métodos alternativos, elas executam funções diferentes. O primeiro verifica se o valor em
$arr['1']
está definido, enquanto o segundo retorna o número de elementos na matriz.fonte
if (sizeof($arr))
traduzido paraif (sizeof($arr) == 1)
- claramente, isso não verifica se a matriz possui mais de um elemento. Esta resposta está correta, e não vejo razão para votar em baixa, daí o meu voto positivo.if(is_array($arr) && count($arr) > 1)
Apenas para ter certeza de que $ arr é realmente uma matriz.
sizeof
é um alias decount
, eu prefiro usar count porque:fonte
$arr
for uma string, ela retornará1
.sizeof()
é um alias paracount()
. Ambos funcionam com não-matrizes também, mas retornarão valores maiores que 1 se o argumento for uma matriz ou umCountable
objeto , portanto, você estará bastante seguro com isso.fonte
Obviamente, usar
count($arr) > 1
(sizeof
é apenas um apelido paracount
) é a melhor solução. Dependendo da estrutura da sua matriz, pode haver vários elementos, mas nenhum$array['1']
elemento.fonte
Usar
count()
esta página explica muito bem http://phparraylength.com/
fonte
Prefiro a
count()
função ao invés desizeOf()
comosizeOf()
é apenas um alias decount()
e não significa o mesmo em muitos outros idiomas. Muitos programadores esperamsizeof()
retornar a quantidade de memória alocada.fonte
sizeof
vscount
Para verificar uma matriz vazia () é melhor que sizeof ().
Se a matriz contiver uma quantidade enorme de dados. Levará mais tempo para contar o tamanho da matriz. Mas verificar o vazio é sempre fácil.
fonte
isset () apenas verifica se uma variável está definida. Não tem nada a ver com tamanho ou com o que a matriz contém
fonte
Presumo que $ arr é uma matriz, então é isso que você está procurando
fonte
O primeiro método
if (isset($arr['1']))
não funcionará em uma matriz associativa.Por exemplo, o código a seguir exibe "Não, não mais que um".
fonte
Eu faço meu array em loop e obtendo os padrões preenchidos adequadamente no Swift 4/5
fonte