Valor mínimo PHP do array associativo. Min - Encontra o menor valor. Encontrando o maior e o menor valor de um array multidimensional em PHP

(PHP 4, PHP 5, PHP 7)

min - Encontra o menor valor

Descrição

Se apenas um argumento for passado - uma matriz de números, min() retorna o menor deles. Se o primeiro argumento for um número inteiro ou flutuante, deverá haver pelo menos mais um. Neste caso a função min() retornará o menor deles.

Comente:

Valores de diferentes tipos são comparados usando regras de comparação padrão. Por exemplo, uma string não numérica ( corda) será comparado com um número inteiro ( inteiro) como se fosse igual 0 , mas várias linhas ( corda) serão comparados em ordem alfabética. O valor de retorno manterá o tipo original da variável, sem conversão.

Valores de retorno

Função min() retorna o valor do parâmetro considerado o "menor" de acordo com as regras de comparação padrão. Se vários valores de tipos diferentes forem iguais entre si (ou seja, 0 E "abc"), então o primeiro será retornado.

Exemplos

Exemplo #1 Exemplo de uso min()

eco min(2, 3, 1, 6, 7); //1
eco min (matriz(2, 4, 5)); //2

// A string "hello", quando comparada com int, é tratada como 0
//Como ambos os valores são iguais, a ordem dos parâmetros determina o resultado
echo min(0, "olá"); //0
echo min ("olá", 0); // olá

// Aqui comparamos -1< 0, поэтому -1 является наименьшим значением
echo min ("olá" , - 1 ); // -1

// Ao comparar arrays de comprimentos diferentes, min retornará o menor
$val = min (array(2 , 2 , 2 ), array(1 , 1 , 1 , 1 )); //matriz(2, 2, 2)

// Múltiplos arrays do mesmo comprimento são comparados da esquerda para a direita
// para este exemplo: 2 == 2, mas 4< 5
$val = min (array(2 , 4 , 8 ), array(2 , 5 , 1 )); //matriz(2, 4, 8)

// Se um array e um não-array forem comparados, o array nunca será retornado
// já que os arrays são considerados maiores que todos os outros valores
$val = min ("string", array(2, 5, 7), 42); //corda

// Se um argumento for NULL ou booleano, ele será comparado com os outros
//usando a regra FALSE< TRUE, учитывая остальные типы аргументов
//No exemplo dado, -10 e 10 são tratados como TRUE
$val = min (- 10 , FALSO , 10 ); //FALSO
$val = min (- 10 , NULO , 10 ); // NULO

// por outro lado, 0 é tratado como FALSE, portanto é "menor" que TRUE
$val = min(0, VERDADEIRO); //0
?>

Matrizes são uma das formas estruturadas convenientes de armazenar informações. Cada elemento dessa matriz tem seu próprio lugar, sua própria chave e valor. O conteúdo dos arrays pode ser diferente, como, por exemplo, um banco de dados de números, nomes ou valores numéricos simples. Falando em números, podemos nos deparar com vários tipos de tarefas, por exemplo, deduzir o valor máximo ou mínimo. Hoje falaremos sobre como isso é resolvido em diferentes linguagens de programação.

Encontrando o maior e o menor valor de um array unidimensional em PHP

Todas as matrizes diferem em sua estrutura. Considere duas matrizes unidimensionais simples, uma das quais não contém chaves:

$meu_array = array(22, 24, 37, 74, 23, 2, 10);

e um idêntico ao anterior, mas com chaves:

$meu_array = array(1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

Vamos tentar exibir os valores máximo e mínimo deste array. Para fazer isso, usaremos funções padrão " máx." E " min"respectivamente:

Eco max($meu_array); // Imprime 74 echo min($my_array); //Imprime 2

Se olharmos mais de perto a segunda matriz, como resultado podemos obter a chave dos valores máximos ou mínimos.

Usando uma matriz como exemplo

$meu_array = array(1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

Isso parecerá assim:

$max = array_keys($meu_array, max($meu_array)); $max = $max;// Chave de valor máximo $min = array_keys($my_array, min($my_array)); $min = $min; // Chave de valor mínimo echo $max; // Imprime o resultado do valor máximo

Conseqüentemente, a chave do valor máximo é “4” e o valor mínimo é “6”.

Encontrando o maior e o menor valor de um array multidimensional em PHP

Matrizes multidimensionais são diferenciadas por seu aninhamento. Por exemplo, um array bidimensional ficaria assim sem as chaves:

$meu_array = array(array(22, 24, 37), array(74, 23, 2), array(10));

E, consequentemente, com certas chaves:

$meu_array = array(array(1 => 22, 2 => 24, 3 => 37), array(4 => 74, 5 => 23, 6 => 2), array(7 => 10));

Neste caso, encontrar os valores máximo e mínimo é um pouco difícil, mas também possível.

Primeiro, para encontrar o máximo e o mínimo aqui, transformamos o array em um array unidimensional:

$out_array = array(); foreach($meu_array as $sub_array) ( $out_array = array_merge($out_array, $sub_array); )

O design funciona para ambas as opções acima. E então, seguindo o exemplo de um array unidimensional, exibiremos os dados que precisamos:

Eco max($out_array); // Imprime 74 echo min($out_array); //Imprime 2

Como um pequeno bônus, darei um exemplo de outro array bidimensional popular:

$meu_array = array(array("id" => "1", "data" => "19/03/2018", "preço" => "5",), array ("id" => "2" , "data" => "19/03/2018", "preço" => "50",), array ("id" => "3", "data" => "19/03/2018", " preço" => "25",));

Por popularidade não me refiro ao conteúdo, mas a um exemplo de sua estrutura. Digamos que aqui você precise exibir os valores máximo e mínimo apenas das chaves de “preço”.

A primeira coisa que você precisa neste caso é obter um novo array apenas com estes dados:

$números = array_column($my_array, "preço");

Eco min($números); // Imprime 5 echo max($números); // Imprime 50

Isso completa o trabalho com arrays em PHP. Se de repente a estrutura do seu array ficar diferente e você não souber como processá-lo, faça a pergunta apropriada nos comentários, tentarei ajudá-lo.

Encontrando o maior e o menor valor de um array unidimensional em JavaScript

Ao contrário do PHP, o tipo de array em JavaScript é muito mais simples, e um array unidimensional simples terá a seguinte aparência:

Var minha_matriz = ;

Nenhum índice é indicado aqui. Para encontrar os valores máximo e mínimo nesta matriz, escreveremos duas funções simples:

Função arrayMax(array) ( return array.reduce(function(a, b) ( return Math.max(a, b); )); ) function arrayMin(array) ( return array.reduce(function(a, b) ( retornar Math.min(a, b));

que são usados ​​para encontrar os valores que precisamos. O uso também é simples:

Alerta(arrayMax(meu_array)); // Imprime 74 alerta(arrayMin(my_array)); //Imprime 2

Neste caso, os números “2” e “74” serão exibidos na tela como valores mínimo e máximo do array.

Encontrando o maior e o menor valor de um array multidimensional em JavaScript

Matrizes multidimensionais em JavaScript são igualmente simples e têm a seguinte aparência:

Var minha_matriz = [ , , ];

Vamos tentar encontrar o máximo e o mínimo aqui. Para começar, escreveremos uma função com a qual, de acordo com o esquema que já conhecemos, representaremos este array como unidimensional:

Var out_array = ; my_array.forEach(function(v) ( Array.prototype.push.apply(out_array, v); ));

E usando o objeto " Matemática"obtemos os valores que precisamos:

Var min = Math.min.apply(nulo, out_array); // Obtenha 2 var max = Math.max.apply(null, out_array); // Obtém 74 alerta(max); // Imprime 74 na tela

Na verdade, em vez do objeto " Matemática“Você pode usar nossas funções usadas na versão com array unidimensional, mas para que você entenda que qualquer problema pode ser resolvido de várias maneiras - aqui dei uma solução um pouco diferente.

Bem, conforme a tradição – um pequeno bônus. Vamos considerar outro array multidimensional com a seguinte estrutura:

Var my_array = [["Um", "19/03/2018", 5], ["Dois", "19/03/2018", 50], ["Três", "19/03/2018", 25 ], ];

Como podemos ver, os valores numéricos em cada array estão em terceiro lugar. Vamos escrever algum código e obter os valores correspondentes apenas destes dados:

Var min = +Infinito; var max = -Infinito; meu_array.forEach(função(item) ( if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ item; // Procurando o valor máximo ) )); alerta(mín+" "+máx); //Mostra o resultado na tela

Isso é tudo. Não se esqueça de apoiar o projeto. Muitas coisas interessantes esperam por você pela frente!

Eu tenho um array neste formato:

Matriz ( => Matriz ( => 117 => Rede => 16) => Matriz ( => 188 => FTP => 23) => Matriz ( => 189 => Internet => 48))

Existe uma boa maneira de obter os valores mínimo e máximo de "contagem"? Eu poderia fazer isso usando vários loops, mas pensei que poderia haver uma maneira melhor.

Ao contrário de outras, você não pode usar as funções min() / max() para este problema, pois essas funções não entendem os arrays de dados (array) passados ​​para elas. Essas funções funcionam apenas para elementos de array escalar.

IMAGEM INICIAR

A razão pela qual usar min() e max() parece dar a resposta correta é porque os arrays são convertidos em tipos para números inteiros, o que é um comportamento indefinido:

O comportamento de conversão para número inteiro não está definido para outros tipos. Não confie em nenhum comportamento observado, pois ele pode mudar sem aviso prévio.

Minha afirmação acima sobre a conversão de tipos estava errada. Na verdade, min() e max() funcionam com arrays, mas não da maneira que o OP precisa que funcionem. Ao usar min() e max() com vários arrays ou um array de elementos de array, compare os elementos elemento por elemento da esquerda para a direita:

$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8) /* * primeiro elemento comparado ao primeiro elemento: 2 == 2 * segundo elemento comparado ao segundo elemento: 4< 5 * first array is considered the min and is returned */

Traduzido para o problema, o OP mostra por que usar diretamente min() e max() parece fornecer o resultado correto. Os primeiros elementos do array são id , então min() e max() compare-os primeiro, aliás, levando ao resultado correto, pois o id mais baixo é aquele que tem a contagem mais baixa e o id mais alto é aquele que tem a menor contagem que tem a contagem mais alta.

FIM DA EDIÇÃO

A maneira correta é usar um loop.

$a = array(array("id" => 117, "nome" => "Rede", "contagem" => 16), array("id" => 188, "nome" => "FTP", " contagem" => 23), array("id" => 189, "nome" => "Internet", "contagem" => 48)); $min = PHP_INT_MAX; $máx = 0; foreach ($a como $i) ( $min = min($min, $i["contagem"]); $max = max($max, $i["contagem"]); )

Você pode usar as funções max() e min().

O que você fez com vários loops? Um é suficiente :)

  1. Obtenha o primeiro elemento contando a contagem de $ min e max
  2. iterar sobre o resto, comparar a contagem com cada $min e $max, se for menor/maior atribuir um novo valor de contagem

Você pode usar as funções max/min pois elas retornarão um array contendo o máximo/mínimo de cada índice. Seu exemplo deve retornar array(189, "Networking", 48) para max . Você pode então obter a pontuação dessa matriz.

Atualizar isso não funciona como eu descartei. O exemplo da página de manual é enganoso e fornece o resultado correto usando max, mas isso é apenas uma coincidência.

Parece que você não pode usar max() em um array 2D. Ele apenas retorna o maior array, em vez de max() de cada índice (conforme indicado em várias respostas).

$contagem = array(); foreach($arr as $_arr) ( $count = $_arr["count"]; ) var_dump(max($count), min($count));

Existe um equivalente construídas em função para isso? (mesmo sem a possibilidade testando)

/** * recupera uma coluna de um array 2D com uma seleção opcional sobre outra coluna * * @param $ aArray para recuperar de * @param $ aColName nome da coluna a ser recuperada, por exemplo. "O_NAME" * @param $aColTest (opcional) nome da coluna para executar o teste, por exemplo. "O_ID" * @param $aTest (opcional) string para teste ex. ">=10", "== "". $Toto. "" " * @return Array 1D com apenas a coluna extraída * @access public * / function extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray as $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ row [ $ aColName ]; ) ) return $ mRes ) // extractColFromArray