質問編集履歴
5
ソースコードでイメージする流れを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -42,4 +42,13 @@
|
|
42
42
|
}
|
43
43
|
}
|
44
44
|
}
|
45
|
-
```
|
45
|
+
```
|
46
|
+
流れとしては、$array_baseの中の187と284というIDを基にし、それぞれに紐づくIDを$idsとして取得します。ここで取得されたIDが497と494と472と471です。
|
47
|
+
そして今回のget_post_metaはこの4つを対象にして、scoreを取得したいわけです。
|
48
|
+
|
49
|
+
つまり上記の最終的な配列にあるのは下記を意味します。
|
50
|
+
|
51
|
+
497のscoreが54
|
52
|
+
494のscoreが44
|
53
|
+
472のscoreが78
|
54
|
+
471のscoreが86
|
4
$idを$idsに修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
$array_base = array( 187, 284 );
|
7
7
|
$array = array();
|
8
8
|
foreach ( $array_base as $id ) {
|
9
|
-
$
|
9
|
+
$ids = get_post_ancestors( $id );
|
10
|
-
$scores = get_post_meta( $
|
10
|
+
$scores = get_post_meta( $ids, 'score', true ); // 機能しない
|
11
11
|
$tmp = [
|
12
12
|
'ids' => $ids,
|
13
13
|
'scores' => $scores
|
3
誤字訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
];
|
15
15
|
array_push($array, $tmp);
|
16
16
|
}
|
17
|
-
var_dump( $
|
17
|
+
var_dump( $array );
|
18
18
|
```
|
19
19
|
|
20
20
|
最終的にはこの配列を作ることが目的です。
|
2
質問内容の簡略化
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
配列
|
1
|
+
配列の中の値を上手に取得して、get_post_metaを機能させたい
|
body
CHANGED
@@ -1,57 +1,22 @@
|
|
1
|
-
|
1
|
+
get_post_metaの対象になる値を取得したいのですが、配列の中にその値があるせいか、上手に取得できません。
|
2
2
|
|
3
|
-
消したい理由はこうです。
|
4
|
-
|
5
|
-
|
3
|
+
$idは取得できても、$scoresができないのです。
|
4
|
+
これはどうしたらよろしいでしょうか?
|
6
5
|
```PHP
|
7
6
|
$array_base = array( 187, 284 );
|
8
|
-
$
|
7
|
+
$array = array();
|
9
|
-
foreach ( $array_base as $
|
8
|
+
foreach ( $array_base as $id ) {
|
9
|
+
$id = get_post_ancestors( $id );
|
10
|
+
$scores = get_post_meta( $id, 'score', true ); // 機能しない
|
10
|
-
$
|
11
|
+
$tmp = [
|
11
|
-
'ids' => $ids
|
12
|
+
'ids' => $ids,
|
13
|
+
'scores' => $scores
|
12
14
|
];
|
13
|
-
array_push($
|
15
|
+
array_push($array, $tmp);
|
14
16
|
}
|
15
17
|
var_dump( $array_1 );
|
16
18
|
```
|
17
|
-
ここでvar_dumpしてみると次です。全ての場所に「string(3)」というのが勝手に入っていることがわかります。これが邪魔者です。
|
18
19
|
|
19
|
-
```php
|
20
|
-
array(2) {
|
21
|
-
[0]=> array(1) {
|
22
|
-
["ids"]=> array(3) {
|
23
|
-
[0]=> string(3) "497"
|
24
|
-
[1]=> string(3) "494"
|
25
|
-
}
|
26
|
-
}
|
27
|
-
[1]=> array(1) {
|
28
|
-
["ids"]=> array(7) {
|
29
|
-
[0]=> string(3) "472"
|
30
|
-
[1]=> string(3) "471"
|
31
|
-
}
|
32
|
-
}
|
33
|
-
}
|
34
|
-
```
|
35
|
-
なぜ邪魔者かというと、上で作った「配列その1」を利用して次のように「配列その2」が作りたいのに、「string(3)」というのがあると、get_post_metaが機能しなくなってしまう(boolfalseになってしまう)ためです。
|
36
|
-
|
37
|
-
つまり、下記の
|
38
|
-
$array_1
|
39
|
-
の中からは「string(3)」はなくなって頂いて、
|
40
|
-
array(497, 494, 472, 471)
|
41
|
-
という意味であってほしいのです。
|
42
|
-
この4つのIDを使って次のようにget_post_metaを機能させて「配列その2」を作りたいわけです。
|
43
|
-
```php
|
44
|
-
$array_2 = array();
|
45
|
-
foreach ( $array_1 as $id ) {
|
46
|
-
$scores = get_post_meta( $id, 'score', true ); // 機能しない
|
47
|
-
$tmp2 = [
|
48
|
-
'scores' => $scores,
|
49
|
-
];
|
50
|
-
array_push($array_2, $tmp2);
|
51
|
-
}
|
52
|
-
```
|
53
|
-
どうしたらこの邪魔者をなくせますでしょうか?
|
54
|
-
|
55
20
|
最終的にはこの配列を作ることが目的です。
|
56
21
|
|
57
22
|
```php
|
@@ -66,7 +31,7 @@
|
|
66
31
|
[1]=> "44"
|
67
32
|
}
|
68
33
|
}
|
69
|
-
[1]=> array(2 {
|
34
|
+
[1]=> array(2) {
|
70
35
|
["ids"]=> array(2) {
|
71
36
|
[0]=> "472"
|
72
37
|
[1]=> "471"
|
1
説明追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
消したい理由はこうです。
|
4
4
|
|
5
|
-
現在、次のようにして配列その1を作っています。
|
5
|
+
現在、次のようにして「配列その1」を作っています。
|
6
6
|
```PHP
|
7
7
|
$array_base = array( 187, 284 );
|
8
8
|
$array_1 = array();
|
@@ -32,8 +32,14 @@
|
|
32
32
|
}
|
33
33
|
}
|
34
34
|
```
|
35
|
-
なぜ邪魔者かというと、上で作った配列その1を利用して次のように配列その2が作りたいのに、「string(3)」というのがあると、get_post_metaが機能しなくなってしまう(boolfalseになってしまう)ためです。
|
35
|
+
なぜ邪魔者かというと、上で作った「配列その1」を利用して次のように「配列その2」が作りたいのに、「string(3)」というのがあると、get_post_metaが機能しなくなってしまう(boolfalseになってしまう)ためです。
|
36
36
|
|
37
|
+
つまり、下記の
|
38
|
+
$array_1
|
39
|
+
の中からは「string(3)」はなくなって頂いて、
|
40
|
+
array(497, 494, 472, 471)
|
41
|
+
という意味であってほしいのです。
|
42
|
+
この4つのIDを使って次のようにget_post_metaを機能させて「配列その2」を作りたいわけです。
|
37
43
|
```php
|
38
44
|
$array_2 = array();
|
39
45
|
foreach ( $array_1 as $id ) {
|