我正在尝试使用ussort来查找返回数据中的最低'价格'。
function cmp($a, $b)
{
return strcmp($a[0]["price"], $b[0]["price"]);
}
usort($openorders, "cmp");
var_dump($openorders);
输出:array(1) {
[0]=>
array(3) {
[0]=>
array(7) {
["order_id"]=>
string(8) "43410734"
["price"]=>
string(9) "0.0035347"
}
[1]=>
array(7) {
["order_id"]=>
string(8) "43410610"
["price"]=>
string(9) "0.0032347"
}
[2]=>
array(7) {
["order_id"]=>
string(8) "43410581"
["price"]=>
string(9) "0.0033347"
}
}
}
在我的函数中,我似乎甚至没有访问带[0]或不带[0]的数据。
如何使用ussort或类似的方法返回多维数组中的最低价格?
你需要这样做:-
<?php
$openorders= array(
'0'=>
array(
'0'=>array(
"order_id"=>"43410734",
"price"=>"0.0035347"
),
'1'=>array(
"order_id"=>"43410610",
"price"=>"0.0032347"
),
'2'=>array(
"order_id"=>"43410581",
"price"=>"0.0033347"
)
)
); // original array
echo "<pre/>";print_r($openorders); // print original array
$new_openorders = $openorders[0]; // since original array have one extra level so assign it's inner array to a new variable
function sortByOrder($a, $b) { // callback function
return strcmp($a["price"], $b["price"]);
}
usort($new_openorders, 'sortByOrder');
echo "<pre/>";print_r($new_openorders); // print the new array
输出:https://eval.in/599410
现在你可以很容易地做:-
$openorders[0] = $new_openorders; // to get back original array
也可以直接不使用任何新的数组变量,你可以这样做:-
https://eval.in/599411您可以这样尝试:
function cmp($a, $b)
{
$d1 = $a[0]['price'];
$d2 = $b[0]['price'];
if ($d1 == $d2) {
return 0;
}
return ($d1 < $d2) ? -1 : 1;
}
usort($openorders[0], "cmp");
var_dump($openorders);