php - suma - matriz que imprima la diagonal
Ordenar una matriz por el valor de una matriz secundaria en PHP (3)
Tengo una matriz compuesta de matrices. Quiero ordenar la matriz principal por una propiedad de las matrices secundarias. Aquí hay un ejemplo
array(2) {
[0]=>
array(3) {
[0]=>
string(6) "105945"
[1]=>
string(10) "First name"
[2]=>
float(0.080878465391)
}
[1]=>
array(3) {
[0]=>
string(6) "109145"
[1]=>
string(11) "Second name"
[2]=>
float(0.0504154818384)
}
Me gustaría ordenar la matriz principal por [2] ascendiendo en las matrices secundarias, por lo que en este caso el resultado serían las matrices secundarias invertidas (.05, 08). ¿Es esto posible usar cualquiera de las numerosas funciones de clasificación de PHP?
Para patrones similares a la base de datos, use array_multisort como se ve en el ejemplo # 3.
Por ejemplo:
$sort = array();
foreach ($data as $key => $row) {
$sort[$key] = $row[''basis''];
}
array_multisort($sort, SORT_ASC, $data);
donde $data
es su matriz de datos y la basis
es el elemento utilizado para ordenar.
Puede hacer uso de la función de usort como:
$arr = array(
array("105945","First name",0.080878465391),
array("109145","Second name",0.0504154818384)
);
function cmp($a, $b) {
if ($a[2] == $b[2]) {
return 0;
}
return ($a[2] < $b[2]) ? -1 : 1;
}
usort($arr,"cmp");
vea esta página por ejemplo
http://php.net/manual/en/function.sort.php
o ejemplo
<?php
function multisort($array, $sort_by) {
foreach ($array as $key => $value) {
$evalstring = '''';
foreach ($sort_by as $sort_field) {
$tmp[$sort_field][$key] = $value[$sort_field];
$evalstring .= ''$tmp[/''' . $sort_field . ''/'], '';
}
}
$evalstring .= ''$array'';
$evalstring = ''array_multisort('' . $evalstring . '');'';
eval($evalstring);
return $array;
}
$test = array(
array( ''a'' => ''1'', ''b'' => ''3''),
array( ''a'' => ''2'', ''b'' => ''1''),
array( ''a'' => ''1'', ''b'' => ''1''));
echo ''Unsorted: '';
print_r($test);
$result = multisort( $test , array(''a'',''b'') );
echo ''Sorted: '';
print_r($result);
?>
Result:
Unsorted: Array
(
[0] => Array
(
[a] => 1
[b] => 3
)
[1] => Array
(
[a] => 2
[b] => 1
)
[2] => Array
(
[a] => 1
[b] => 1
)
)
Sorted: Array
(
[0] => Array
(
[a] => 1
[b] => 1
)
[1] => Array
(
[a] => 1
[b] => 3
)
[2] => Array
(
[a] => 2
[b] => 1
)
)