回答編集履歴

2

ちょうせい

2019/11/07 01:40

投稿

yambejp
yambejp

スコア116694

test CHANGED
@@ -53,3 +53,17 @@
53
53
  結局戻り値はプラスかマイナス(0も含め)しかみてないので、
54
54
 
55
55
  比較するのが数値であれば引き算すれば事足りるわけです。
56
+
57
+
58
+
59
+ # post_ids順
60
+
61
+ ```PHP
62
+
63
+ usort($post_datas,function($x,$y) use($post_ids){
64
+
65
+ return array_search($x[$x["post_type"]."_id"],$post_ids)-array_search($y[$y["post_type"]."_id"],$post_ids);
66
+
67
+ });
68
+
69
+ ```

1

ちょうせい

2019/11/07 01:40

投稿

yambejp
yambejp

スコア116694

test CHANGED
@@ -7,3 +7,49 @@
7
7
  });
8
8
 
9
9
  ```
10
+
11
+
12
+
13
+ # usortの仕組み
14
+
15
+ > マイナス「-」の意味
16
+
17
+
18
+
19
+ $xの○○○_id要素と$yの○○○_id要素の大きさを比べて
20
+
21
+ $xが大きければ$x[○○○]-$y[○○○]はプラスになり、小さければマイナスになります。
22
+
23
+ usortは2値をくらべてマイナスなら前に、プラスなら後にソートする処理です
24
+
25
+ ちゃんと書くならこんな感じです
26
+
27
+ ```PHP
28
+
29
+ usort($post_datas,function($x,$y){
30
+
31
+ $ret=1;
32
+
33
+ if($x[$x["post_type"]."_id"]<$y[$y["post_type"]."_id"]) $ret=-1;
34
+
35
+ return $ret;
36
+
37
+ });
38
+
39
+ ```
40
+
41
+ 三項演算でかくとちょっと見やすくなります
42
+
43
+ ```PHP
44
+
45
+ usort($post_datas,function($x,$y){
46
+
47
+ return $x[$x["post_type"]."_id"]<$y[$y["post_type"]."_id"])?-1:1;
48
+
49
+ });
50
+
51
+ ```
52
+
53
+ 結局戻り値はプラスかマイナス(0も含め)しかみてないので、
54
+
55
+ 比較するのが数値であれば引き算すれば事足りるわけです。