1
$query_posts = "
SELECT DISTINCT meta_value
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_key = 'Product'
AND wposts.post_status = 'publish'
AND wposts.post_type = 'post'
ORDER BY wposts.post_date DESC";

$result = mysql_query($query_posts) or die(mysql_error());
while($row = mysql_fetch_array($result)){
    echo $row['meta_value'];
}

上記は、以下のような結果のリストを生成します。

235/40/R18/95/ZR(Y)/XL £180.00
225/45/R17/94/W/XL £180.00
235/45/R17/97/Y/XL £180.00
245/45/R17/99/Y/XL £180.00
245/40/R17/91/Y £180.00
225/40/R18/92/W/XL £180.00
etc etc

あなたが推測していない場合、それらはタイヤのサイズです。最初の 3 つの値を個別のリレーショナル メニュー (Trye Width / Sidewall / Rim) に分割する必要があります。

私が使用する場合、私はそれを解決しました:

$query_posts = "
SELECT DISTINCT meta_value
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_key = 'Product'
AND wposts.post_status = 'publish'
AND wposts.post_type = 'post'
ORDER BY wposts.post_date DESC";
$result = mysql_query($query_posts) or die(mysql_error());
while($row = mysql_fetch_array($result)){
    $tyres_widths = (explode("/",$row['meta_value']));
    echo ($tyres_widths[0]); 
}

最初の列 ($tyres_widths[0])、2 番目の列 ($tyres_widths[1])、または 3 番目の列 ($tyres_widths[2]) を取得できますが、値は明確ではありません。それらはメニューで関係があります。

私のアプローチは正しいですか?より良い方法が必要ですか?誰か助けてくれませんか。正解には喜んでご褒美をあげます。もちろん、他の誰かが利益を得ることができます。これがポイントです!!

前もって感謝します

ストゥ

4

3 に答える 3

2

あなたのアプローチは正しいです。list配列を「アンパック」するために使用できることに注意してください。

list($width, $sidewall, $rim) = explode("/",$row['meta_value']);

という名前の変数は、 という名前$sidewallの変数よりも明確です$tire_widths[1]

編集

さらに整然とした、以下を使用して、フィールドを連想配列に戻すことができます。

list($tires['width'], 
     $tires['sidewall'], 
     $tires['rim'])      = explode("/",$row['meta_value']);

編集

コメントのリクエストごとに、特定のフィールドの個別の値のリストを作成するには、別の配列を作成して使用する必要がありますarray_unique

$result = mysql_query($query_posts) or die(mysql_error());
$ar_widths = array(); // setup array of widths

while($row = mysql_fetch_array($result)){
    list($width, $sidewall, $rim) = explode("/",$row['meta_value']);

    $ar_widths[] = $width; // remember width
}

$ar_widths = array_unique($ar_widths); // remove duplicates
print_r($ar_widths);
于 2010-11-02T09:08:40.493 に答える
0

「array_unique」関数を使用して、配列から重複する要素を削除できます。

于 2010-11-02T09:51:40.873 に答える
0

別のアプローチは正規表現ですが、リソースを「食べる」ため、お勧めしません。できることは、配列を登り、first、next、end などの関数を使用して登るときに配列に名前を付けることです。

php.net/next alt でさまざまな関数の動作を確認できます。php.net/関数名

psそれが役に立ったことを願っています

$array = (explode("/",$row['meta_value']));
$tires['width']= first($array);
$tires['height']= next($array);
$tires['depth']= next($array);

など、配列を登り続け、好きなように名前を付けます。これ以上取得するものがない場合は false を返します

于 2010-11-02T08:55:03.700 に答える