3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

配列の要素を条件を指定して並び替える

Last updated at Posted at 2013-05-24
# PHP 5.4.9
<?php

$ary = array(
  array('name'=>'aaa','age'=>111,'id'=>1),
  array('name'=>'bbb','age'=>555,'id'=>2),
  array('name'=>'ccc','age'=>222,'id'=>3)
);

function cmp_by_key($k){
  $cmp = function($a,$b)use($k) {
    if($a[$k] == $b[$k]){
      return 0;
    }elseif($a[$k] < $b[$k]){
      return -1;
    }else{
      return 1;
    }
  };
  return $cmp;
}

# order by age
echo 'order by age'.PHP_EOL;
$by_age = cmp_by_key('age');
usort($ary,$by_age);
foreach($ary as $k => $v ){
  echo str_replace(PHP_EOL,'',var_export($v,true)).PHP_EOL;
}

# order by id
echo 'order by id'.PHP_EOL;
$by_id = cmp_by_key('id');
usort($ary,$by_id);
foreach($ary as $k => $v ){
  echo str_replace(PHP_EOL,'',var_export($v,true)).PHP_EOL;
}

/* output 

order by age
array (  'name' => 'aaa',  'age' => 111,  'id' => 1,)
array (  'name' => 'ccc',  'age' => 222,  'id' => 3,)
array (  'name' => 'bbb',  'age' => 555,  'id' => 2,)
order by id
array (  'name' => 'aaa',  'age' => 111,  'id' => 1,)
array (  'name' => 'bbb',  'age' => 555,  'id' => 2,)
array (  'name' => 'ccc',  'age' => 222,  'id' => 3,)

*/

# Python 2.7.1
data =[
  {'name':'aaa','age':111,'id':1},
  {'name':'bbb','age':555,'id':2},
  {'name':'ccc','age':222,'id':3}]

print "order by age"
for row in sorted(data,key=lambda x:x['age']):
  print row

print "order by id"
for row in sorted(data,key=lambda x:x['id']):
  print row
order by age

""" output 
{'age': 111, 'name': 'aaa', 'id': 1}
{'age': 222, 'name': 'ccc', 'id': 3}
{'age': 555, 'name': 'bbb', 'id': 2}
order by id
{'age': 111, 'name': 'aaa', 'id': 1}
{'age': 555, 'name': 'bbb', 'id': 2}
{'age': 222, 'name': 'ccc', 'id': 3}
"""
//scala 2.10.1
var data = List(
  Map("name"->"aaa","age"->"111","id"->"1"),
  Map("name"->"bbb","age"->"555","id"->"2"),
  Map("name"->"ccc","age"->"222","id"->"3"))

//order by age
var by_age = data.sortBy( a=>a("age").toInt )
println("order by age")
by_age.foreach(println)

//order by id
var by_id = data.sortBy( a=>a("id").toInt )
println("order by id")
by_id.foreach(println)

/* output
order by age
Map(name -> aaa, age -> 111, id -> 1)
Map(name -> ccc, age -> 222, id -> 3)
Map(name -> bbb, age -> 555, id -> 2)
order by id
Map(name -> aaa, age -> 111, id -> 1)
Map(name -> bbb, age -> 555, id -> 2)
Map(name -> ccc, age -> 222, id -> 3)
*/
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?