¿Cómo puedo agregar ciertos valores de una matriz juntos y luego ordenar por la suma? -- php campo con arrays camp Relacionados El problema

How can I add certain values of an array together and then sort by the sum?


0
vote

problema

Español

Por lo tanto, estoy tratando de encontrar el mejor modelo dentro de nuestra base de datos para que coincida con los valores ingresados ​​del usuario para la altura, el peso, etc. He generado una variable llamada altematchmultiple basada en valores ponderados y almacenado todos los resultados en una matriz global $ modelos . ¿Cómo puedo aplicar matemáticas a solo los campos ____Matchmultiple y luego ordenarlo por el resultado? Por ejemplo, almaceno el modelo de cada modelo, pero solo quiero agregar los otros valores y luego encontrar el promedio más alto.

Aquí hay algún código relevante:

  while($row=mysqli_fetch_array($array)) {     $userHeight=$_POST['height'];     $userWeight=$_POST['weight'];     $userShoulder=$_POST['shoulder'];     $userWaist=$_POST['waist'];     $userInseam=$_POST['inseam'];     $heightMatchMultiple=0;      //creates a weighted variable for height     if(isset($row['modelHeight']))     {         if($userHeight==$row['modelHeight'])         {             $heightMatchMultiple=10;         }         elseif($userHeight==($row['modelHeight']+1) || $userHeight==($row['modelHeight']-1))         {             $heightMatchMultiple=9;         }         //same code down til multiple hits 1         else         {             $heightMatchMultiple=1;         }          //similar code for the weight, shoulders, etc.......         //....         array_push($models,array("modelID" => $row['modelID'],                                  "modelHeightMatch" => $heightMatchMultiple,                                  "modelWeightMatch" => $weightMatchMultiple,                                  "modelShoulderMatch" => $shoulderMatchMultiple,                                  "modelWaistMatch" => $waistMatchMultiple,                                  "modelInseamMatch" => $inseamMatchMultiple));   

Me gustaría hacer una función que agregue todas las variables _____matchmultiple dentro de la matriz (sin incluir el modelo) y luego se divide por el número de elementos dentro de la matriz para cada uno. De esta manera puedo descubrir qué modelo es la coincidencia más cercana.

Original en ingles

So I am trying to find the best model within our database to match the user's inputted values for Height, Weight, etc. I have generated a variable called heightMatchMultiple based on weighted values and stored all the results in a global array $models. How can I apply math to only the ____MatchMultiple fields and then sort by the result? For example, I store the modelID of each model but I only want to add up the other values and then find the highest average.

Here is some relevant code:

while($row=mysqli_fetch_array($array)) {     $userHeight=$_POST['height'];     $userWeight=$_POST['weight'];     $userShoulder=$_POST['shoulder'];     $userWaist=$_POST['waist'];     $userInseam=$_POST['inseam'];     $heightMatchMultiple=0;      //creates a weighted variable for height     if(isset($row['modelHeight']))     {         if($userHeight==$row['modelHeight'])         {             $heightMatchMultiple=10;         }         elseif($userHeight==($row['modelHeight']+1) || $userHeight==($row['modelHeight']-1))         {             $heightMatchMultiple=9;         }         //same code down til multiple hits 1         else         {             $heightMatchMultiple=1;         }          //similar code for the weight, shoulders, etc.......         //....         array_push($models,array("modelID" => $row['modelID'],                                  "modelHeightMatch" => $heightMatchMultiple,                                  "modelWeightMatch" => $weightMatchMultiple,                                  "modelShoulderMatch" => $shoulderMatchMultiple,                                  "modelWaistMatch" => $waistMatchMultiple,                                  "modelInseamMatch" => $inseamMatchMultiple)); 

I would like to make a function that adds all of the _____MatchMultiple variables within the array (not including modelID) and then divides by the number of items within the array for each. This way I can find out which model is the closest match.

     

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 
  function getAverage($array) {       var $myTotal = 0       for ($i = 1; $i<= sizeof($array) - 1; $i++) {           $myTotal += $array[$i]       }       var $myAverage = $myTotal/(sizeof(array) - 1)       return($myAverage) }   
 
function getAverage($array) {       var $myTotal = 0       for ($i = 1; $i<= sizeof($array) - 1; $i++) {           $myTotal += $array[$i]       }       var $myAverage = $myTotal/(sizeof(array) - 1)       return($myAverage) } 
 
 
 
 
0
 
vote

¿Esta función Sum_Array () lo resuelve?

  function safe_key_inc(&$arr, $key, $inc) {   if (array_key_exists($key, $arr))     $arr[$key] += $inc;   else     $arr[$key] = $inc; }  function sum_array($arr) {   $sum_arr = [];    foreach ($arr as $el)     foreach ($el as $key => $val)     {       if (strstr($key, "Match"))          safe_key_inc($sum_arr,$key,$val);        }    return $sum_arr; }   
 

Does this sum_array() function solve it for you?

function safe_key_inc(&$arr, $key, $inc) {   if (array_key_exists($key, $arr))     $arr[$key] += $inc;   else     $arr[$key] = $inc; }  function sum_array($arr) {   $sum_arr = [];    foreach ($arr as $el)     foreach ($el as $key => $val)     {       if (strstr($key, "Match"))          safe_key_inc($sum_arr,$key,$val);        }    return $sum_arr; } 
 
 

Relacionados problema

4  PHP: Ordenar una matriz  ( Php sort an array ) 
Tengo una matriz con datos de una tabla MySQL en un modelo establecido anidado, me gustaría ser ordenado, no solo alfabético, sino también con los nodos infan...

51  Usando 'in' para que coincida con un atributo de los objetos de Python en una matriz  ( Using in to match an attribute of python objects in an array ) 
No recuerdo si estaba soñando o no, pero parece que me recuerdo que hay una función que permitió algo como, foo in iter_attr(array of python objects, attri...

40  ¿Cuál es la mejor manera de iterar a través de una matriz en Classic ASP vbscript?  ( What is the best way to iterate through an array in classic asp vbscript ) 
en el código a continuación For i = LBound(arr) To UBound(arr) ¿Cuál es el punto en preguntar usando LBound ? Seguramente eso es siempre 0. ...

216  NET Estructuras de datos: Arraylist, Lista, Hashtable, Diccionario, Lista de clasificación, SortedDictionary - Velocidad, Memoria, ¿Cuándo usar cada uno?  ( Net data structures arraylist list hashtable dictionary sortedlist sorted ) 
.NET tiene muchas estructuras de datos complejas. Desafortunadamente, algunos de ellos son bastante similares, y no siempre estoy seguro de cuándo usar uno y ...

0  ¿Puedo obtener todas las llaves de una matrices asociativas de varios niveles en PHP?  ( Can i get all keys of an multi level associative arrays in php ) 
¿Hay alguna forma en PHP en la que puedo obtener las llaves de nivel N para la matriz multidimensional en PHP? Aquí está mi matriz asociativa y como salida....

352  ¿Cuál es la forma de "correcta" de iterar a través de una matriz en Ruby?  ( What is the right way to iterate through an array in ruby ) 
PHP, para todos sus defectos, es bastante bueno en este aspecto. No hay diferencia entre una matriz y un hash (tal vez soy ingenuo, pero esto parece obvio der...

93  ¿Cómo descargar un bytearray usando ActionScript 3?  ( How to unload a bytearray using actionscript 3 ) 
¿Cómo descargo en la fuerza un ByteArray de la memoria usando ActionScript 3? He intentado lo siguiente: AF_INET0 ...

0  Operación de matriz JavaScript  ( Javascript array operation ) 
var arr = ['prueba', 'hola']; ¿Hay una llamada nativa de JavaScript para obtener un índice de algún valor ('Hello') en una matriz? ...

76  ¿Cuál es la mejor manera de generar una nube de etiquetas de una matriz usando H1 a H6 para el tamaño?  ( Whats the best way to generate a tag cloud from an array using h1 through h6 fo ) 
Tengo las siguientes matrices: $artist = array("the roots", "michael jackson", "billy idol", "more", "and more", "and_YET_MORE"); $count = array(5, 3, 9, 1...

1  poner matriz de clase personalizada en un conjunto de datos o XML (C #)  ( Put custom class array into a dataset or xml c ) 
Estoy haciendo un pequeño juego de cartas que requiere una lista de puntuación más alta que se guarda en un archivo externo, y están cargados de ella al comie...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos