$array = $value->meta_value;
でこの習得した$array配列の中身のリスト表示はできたのですが重複しているものがあるため、さらに重複を削除させるために
$result = array_unique($array);
を追加したのですが、$resultを表示させようとするとなぜかうまく結果が表示されません。
原因はわかりますでしょうか?(array_uniqueはforeachの後に置く?)
↓コードです。
>||
<?php
global $wpdb;
$data = $wpdb->get_results( "
SELECT meta_value
FROM $wpdb->postmeta
WHERE meta_key = '◯◯◯'
" );
foreach ($data as $value) {
$array = $value->meta_value;
$result = array_unique($array);
print_r($result);
}
?>
||<
配列なのは$arrayでなく$dataです。
だからforeachに$dataを渡すのです。
Array ( [1] => Array ( [meta_value] => ○ ) [2] => Array ( [meta_value] => × ) [3] => Array ( [meta_value] => △ ) ... )
です。
この場合はget_resultsよりget_colでしょう。
素直な配列になります。
そして配列個々を処理するforeachの前に配列全体を処理するarray_uniqueを使います。
しかし、そもそも重複をなくすためにSELECT DISTINCTを使うのが一番の方法だと思います。
配列なのは$dataです。
2017/07/21 19:33:40だから$dataに[○]を使います。
表示するだけならわざわざ変数に入れる必要がありません。
echo $data1[$s]->meta_value;
echo $data2[$s]->meta_value;
あと、単なる慣例ですが、forで単に数字を回すときは$iを使います。
加えて、forを使うならforのマニュアルも読みましょう。基本の配列の回しかたもあります。
http://php.net/manual/ja/control-structures.for.php
この場合はget_resultsよりget_colでしょう。
素直な配列になります。
それなら以下で済むと思います。
echo $data1[$i];
echo $data2[$i];
get_resultsを使うならget_resultsのマニュアルも読みましょう。get_colも書いてあります。
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wpdb_Class
お忙しい中本当にありがとうございました。
2017/07/24 12:58:19echo $data1[$s]->meta_value;
echo $data2[$s]->meta_value;
こちらの方法で for ($i = 0; $i < **; $i++){ を追加してうまくいきました。
最初なぜか、この出力がうまくいかず、配列にわざわざ入れたりして難儀しておりました。あと、get_colのほうだと、meta_valueを最初から取ってくるやり方になるのですね。つまり、->meta_value がいらないくなるのですね。じっくりget_colのほうを読んでみたいと思います。ありがとうございました。