2012-03-15 4 views
1

これは単純化されたバージョンです。私が試したこの配列を解析するにはどうすればいいですか?

fname lastname | email 
fname lastname | email 
etc 

foreach($form_data as $form_field) 
{ 
    $collected_data_sql = "SELECT * FROM `".WPSC_TABLE_SUBMITED_FORM_DATA."` WHERE `log_id` = '".$purchase['id']."' AND `form_id` = '".$form_field['id']."' LIMIT 1"; 
    $collected_data = $wpdb->get_results($collected_data_sql,ARRAY_A); 

    $collected_data = $collected_data[0]; 

    list($fname, $lastname, $email) = $collected_data; 

    echo $fname. ' '.$lastname.' | '.$email; 
} 

しかし、それは動作しませんでした私はどのように私のような出力を持つことができる値

Array 
(
    [id] => 10711 
    [log_id] => 892 
    [form_id] => 2 
    [value] => fname 
) 
Array 
(
    [id] => 10712 
    [log_id] => 892 
    [form_id] => 3 
    [value] => lastname 
) 
Array 
(
    [id] => 10717 
    [log_id] => 892 
    [form_id] => 8 
    [value] => email 
) 
// ... 
// etc 

と配列$ collected_dataを持っています。

+1

これはあなたの質問に答えるものではありませんが、何度もその質問を呼び出すのではなく、なぜJOINをしないのですか? – Brad

+3

*これはうまくいかなかった* - 代わりにあなたの出力は何でしたか? – Josh

答えて

1

完全に明確でない機能を使用している場合は、マニュアルを確認してください。 listには、0から始まる数値インデックスを持つ配列が必要です。あなたはarray_valuesで、数値のものに文字列キーから配列に変換することができます:

list($fname, $lastname, $email) = array_values($collected_data); 

(自分の課題であった場合には、私はあなたの質問は、あなたの具体的な問題について多くの情報を与えないので、それほどよく分からない)

はまた、あなたがあなたにも興味を持っているデータ、例えばを抽出する必要があるので、配列の配列を持っている:

$fname = $fname['value']; 
$lastname= $lastname['value']; 
$email = $email['value']; 

しかし、それはただの一例です。

0

$ collect_data_sqlをエコーアウトしてIDEでテストして、SQLが正しいかどうかを確認してください。私はあなたのエラーがあなたのどこの条件の中でそこから始まったと信じています

1

$collected_dataの配列インデックスを考慮する必要があるので、list()は機能しません。それはあなたが持っていた場合のみ動作しますarray('John', 'Smith', '[email protected]');

あなたは結果を反復し、 '値'キーから値を引き出す必要があります。

関連する問題