回答編集履歴
2
ちょうせい
answer
CHANGED
@@ -25,4 +25,11 @@
|
|
25
25
|
});
|
26
26
|
```
|
27
27
|
結局戻り値はプラスかマイナス(0も含め)しかみてないので、
|
28
|
-
比較するのが数値であれば引き算すれば事足りるわけです。
|
28
|
+
比較するのが数値であれば引き算すれば事足りるわけです。
|
29
|
+
|
30
|
+
# post_ids順
|
31
|
+
```PHP
|
32
|
+
usort($post_datas,function($x,$y) use($post_ids){
|
33
|
+
return array_search($x[$x["post_type"]."_id"],$post_ids)-array_search($y[$y["post_type"]."_id"],$post_ids);
|
34
|
+
});
|
35
|
+
```
|
1
ちょうせい
answer
CHANGED
@@ -2,4 +2,27 @@
|
|
2
2
|
usort($post_datas,function($x,$y){
|
3
3
|
return $x[$x["post_type"]."_id"]-$y[$y["post_type"]."_id"];
|
4
4
|
});
|
5
|
-
```
|
5
|
+
```
|
6
|
+
|
7
|
+
# usortの仕組み
|
8
|
+
> マイナス「-」の意味
|
9
|
+
|
10
|
+
$xの○○○_id要素と$yの○○○_id要素の大きさを比べて
|
11
|
+
$xが大きければ$x[○○○]-$y[○○○]はプラスになり、小さければマイナスになります。
|
12
|
+
usortは2値をくらべてマイナスなら前に、プラスなら後にソートする処理です
|
13
|
+
ちゃんと書くならこんな感じです
|
14
|
+
```PHP
|
15
|
+
usort($post_datas,function($x,$y){
|
16
|
+
$ret=1;
|
17
|
+
if($x[$x["post_type"]."_id"]<$y[$y["post_type"]."_id"]) $ret=-1;
|
18
|
+
return $ret;
|
19
|
+
});
|
20
|
+
```
|
21
|
+
三項演算でかくとちょっと見やすくなります
|
22
|
+
```PHP
|
23
|
+
usort($post_datas,function($x,$y){
|
24
|
+
return $x[$x["post_type"]."_id"]<$y[$y["post_type"]."_id"])?-1:1;
|
25
|
+
});
|
26
|
+
```
|
27
|
+
結局戻り値はプラスかマイナス(0も含め)しかみてないので、
|
28
|
+
比較するのが数値であれば引き算すれば事足りるわけです。
|