teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

ソースコードでイメージする流れを追記

2018/12/09 10:23

投稿

daijin
daijin

スコア17

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に修正

2018/12/09 10:23

投稿

daijin
daijin

スコア17

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
- $id = get_post_ancestors( $id );
9
+ $ids = get_post_ancestors( $id );
10
- $scores = get_post_meta( $id, 'score', true ); // 機能しない
10
+ $scores = get_post_meta( $ids, 'score', true ); // 機能しない
11
11
  $tmp = [
12
12
  'ids' => $ids,
13
13
  'scores' => $scores

3

誤字訂正

2018/12/09 10:12

投稿

daijin
daijin

スコア17

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  ];
15
15
  array_push($array, $tmp);
16
16
  }
17
- var_dump( $array_1 );
17
+ var_dump( $array );
18
18
  ```
19
19
 
20
20
  最終的にはこの配列を作ることが目的です。

2

質問内容の簡略化

2018/12/09 09:37

投稿

daijin
daijin

スコア17

title CHANGED
@@ -1,1 +1,1 @@
1
- 配列に「string(3)」という邪魔者が入ってしまうせいで、get_post_metaで中の値を取得できま
1
+ 配列中の値を上手に取得して、get_post_metaを機能さたい
body CHANGED
@@ -1,57 +1,22 @@
1
- 配列勝手に入る配列に「string(3)」というは、どうしたら消ます
1
+ get_post_metaの対象値を取得したいのですが、配列の中値がある、上手に取得できません。
2
2
 
3
- 消したい理由はこうです。
4
-
5
- 現在、次のようにし「配列その1」を作ってす。
3
+ $idは取得できも、$scoresができなのです。
4
+ これはどうしたらよろしいでしょうか?
6
5
  ```PHP
7
6
  $array_base = array( 187, 284 );
8
- $array_1 = array();
7
+ $array = array();
9
- foreach ( $array_base as $ids ) {
8
+ foreach ( $array_base as $id ) {
9
+ $id = get_post_ancestors( $id );
10
+ $scores = get_post_meta( $id, 'score', true ); // 機能しない
10
- $tmp1 = [
11
+ $tmp = [
11
- 'ids' => $ids
12
+ 'ids' => $ids,
13
+ 'scores' => $scores
12
14
  ];
13
- array_push($array_1, $tmp1);
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

説明追記

2018/12/09 09:33

投稿

daijin
daijin

スコア17

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 ) {