PHP - cómo puedo ordenar un array bidimensional por la suma de sus valores

 
Vista:
sin imagen de perfil
Val: 80
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

cómo puedo ordenar un array bidimensional por la suma de sus valores

Publicado por Alejandro (37 intervenciones) el 18/05/2020 22:37:47
Hola buenas, ¿cómo puedo ordenar un array bidimensional por la suma de sus valores?
Sería algo así:

1
sort($array, array_sum($array));

Pero no funciona.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

cómo puedo ordenar un array bidimensional por la suma de sus valores

Publicado por joel (1269 intervenciones) el 19/05/2020 07:58:21
Nos puedes mostrar como es el array para poder probarlo?

Viendo como lo haces, creo que no te funcionara, ya que como segundo parámetro la función sort() espera un flag...
https://www.php.net/manual/en/function.sort.php

No se si te puede servir este código:
https://www.lawebdelprogramador.com/codigo/PHP/5782-Ordenar-una-coleccion-de-arrays-u-objetos.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 80
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

cómo puedo ordenar un array bidimensional por la suma de sus valores

Publicado por Alejandro (37 intervenciones) el 19/05/2020 13:20:52
1
2
3
4
5
6
7
8
9
<?php
    $array = array (
      array("Isabel","7","7","10","6","4"),
      array ("Vicente","4","7","5","4","5"),
      array("Manuel","3","5","6","1","2"),
      array("Pedro","2","7","9","2","1"),
      array("Ana","6","1","2","8","5")
      );
?>
La suma de sus valores sería:
34
25
17
21
22
Respectivamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

cómo puedo ordenar un array bidimensional por la suma de sus valores

Publicado por joel (1269 intervenciones) el 19/05/2020 16:30:35
Hola Alejandro, haber si te sirve este código...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$array = array (
    array("Isabel","7","7","10","6","4"),
    array ("Vicente","4","7","5","4","5"),
    array("Manuel","3","5","6","1","2"),
    array("Pedro","2","7","9","2","1"),
    array("Ana","6","1","2","8","5")
);
 
$resultado=array_map(function($el) {
    return array_sum(array_slice($el, 1));
}, $array);
 
print_r($resultado);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 80
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

cómo puedo ordenar un array bidimensional por la suma de sus valores

Publicado por Alejandro (37 intervenciones) el 19/05/2020 19:02:00
El problema es que lo tengo que ordenar en una tabla por el total y solo consigo ordenarlo por el nombre del vendedor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<table border="1">
  <tr>
  <th align="left">Vendedor</th>
  <th align="left">L</th>
  <th align="left">M</th>
  <th align="left">X</th>
  <th align="left">J</th>
  <th align="left">V</th>
  <th align="left">Total</th>
  </tr>
  <?php
  $long=count($ej1);
  sort($ej1);
  for ($i=0; $i < $long; $i++) {
    echo "<tr>";
    for ($j=0; $j < 6; $j++) {
      echo "<td>".$ej1[$i][$j]."</td>";
    }
    echo "<td>".array_sum($ej1[$i])."</td>";
    echo "</tr>";
  }
  ?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

cómo puedo ordenar un array bidimensional por la suma de sus valores

Publicado por joel (1269 intervenciones) el 20/05/2020 19:45:29
Pero esto no lo habias contado Alejandro!!! lo que te hice no te sirve!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

cómo puedo ordenar un array bidimensional por la suma de sus valores

Publicado por joel (1269 intervenciones) el 20/05/2020 19:51:00
Seria algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
$array = array (
    array("Isabel","7","7","10","6","4"),
    array("Vicente","4","7","5","4","5"),
    array("Manuel","3","5","6","1","2"),
    array("Pedro","2","7","9","2","1"),
    array("Ana","6","1","2","8","5")
);
 
$resultado=array_map(function($el) {
    array_push($el, array_sum(array_slice($el, 1)));
    return $el;
}, $array);
usort($resultado, function($a,$b) {
    return ($a[6] < $b[6]) ? -1 : ($a[6] == $b[6]) ? 0 : 1;
});
 
?>
 
<table border="1">
    <tr>
        <th align="left">Vendedor</th>
        <th align="left">L</th>
        <th align="left">M</th>
        <th align="left">X</th>
        <th align="left">J</th>
        <th align="left">V</th>
        <th align="left">Total</th>
    </tr>
    <?php
    for ($i=0; $i < count($resultado); $i++) {
        echo "<tr>";
        for ($j=0; $j <= 6; $j++) {
            echo "<td>".$resultado[$i][$j]."</td>";
        }
        echo "</tr>";
    }
    ?>
</table>

y te devuelve:

ordenar-array
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 80
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

cómo puedo ordenar un array bidimensional por la suma de sus valores

Publicado por Alejandro (37 intervenciones) el 21/05/2020 13:35:52
Muchas gracias Joel, ya me funciona y lo entiendo mas o menos. Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar