21,886
社区成员
发帖
与我相关
我的任务
分享
Array
(
[0] => stdClass Object
(
[total] => 1
[name] => Baby
)
[parent_161] => stdClass Object
(
[name] => Cab
[total] => 3
)
[1] => stdClass Object
(
[total] => 3
[name] => Tree
)
)
//如果按照name asc 排序?并保持结构不变?
$ar = array(
(object)array( 'total' => 1, 'name' => 'Baby'),
'parent_161' => (object)array( 'name' => 'Cab', 'total' =>3),
(object)array( 'total' => 3, 'name' => 'Tree'),
);
foreach($ar as $v)
$p[] = $v->name;
array_multisort($p, SORT_ASC, $ar);
print_r($ar);
Array
(
[0] => stdClass Object
(
[total] => 1
[name] => Baby
)
[parent_161] => stdClass Object
(
[name] => Cab
[total] => 3
)
[1] => stdClass Object
(
[total] => 3
[name] => Tree
)
)
<?php
class Test
{
public $id;
public $name;
public function __construct($id, $name)
{
$this->id = $id;
$this->name = $name;
}
}
$test1 = new Test(1, 'q1');
$test2 = new Test(2, 'w2');
$test3 = new Test(3, 'a3');
$data[] = $test1;
$data[] = $test2;
$data[] = $test3;
var_dump($data);
usort($data, 'sortObj');
var_dump($data);
function sortObj($a, $b)
{
$a_name = $a->name;
$b_name = $b->name;
if ($a_name == $b_name)
{
return 0;
}
return ($a_name < $b_name) ? -1 : 1;
}
?>
function natsort2d( &$arrIn, $index = null )
{
$arrTemp = array();
$arrOut = array();
foreach ( $arrIn as $key=>$value ) {
reset($value);
$arrTemp[$key] = is_null($index)
? current($value)
: $value[$index];
}
natsort($arrTemp);
foreach ( $arrTemp as $key=>$value ) {
$arrOut[$key] = $arrIn[$key];
}
$arrIn = $arrOut;
}
$arr = array(
'0'=>array('total'=>1,'name'=>'Baby'),
'parent_16'=>array('total'=>3,'name'=>'Cab'),
'1'=>array('total'=>3,'name'=>'Tree'),
);
uasort($arr,"mysort");
print_r($arr);
function mysort($arr1=array(),$arr2=array()){
if($arr1['name'] == $arr2['name']){
return 0;
}
return ($arr1['name'] > $arr2['name'])?'1':'-1';
}