私はこれにWordpressを使用していますが、Wordpress中心の問題ではないので、ここで質問します。
ここで私のコードのスニペットを見ることができます:http://pastebin.com/Cbc8wKvB
<?php
function getFormIds()
{
global $wpdb;
$sql = "
SELECT a.id
FROM wp_rg_lead a
WHERE a.form_id = 10 AND a.payment_status = 'Approved'
";
$query = $wpdb->get_results($sql);
if($query)
return $query;
return false;
}
function getFormInfo($form_id)
{
global $wpdb;
$sql = "
SELECT *
FROM wp_rg_lead_detail
WHERE lead_id = $form_id
";
$query = $wpdb->get_results($sql);
if($query)
return $query;
return false;
}
$credit_card_form_ids = getFormIds();
if ( $credit_card_form_ids ) {
$entries = array();
foreach( $credit_card_form_ids as $entry) {
$single_entry = getFormInfo($entry->id);
if ( $single_entry ) {
$entry_array = array();
$full_array = array();
foreach( $single_entry as $entry ) {
$curr_array = array( $entry->field_number => strip_tags($entry->value));
$entry_array[$entry->field_number] = strip_tags($entry->value);
array_push($full_array, $entry_array);
}
}
}
#var_dump('full_array', $full_array);
}
基本的に、特定の基準に一致するすべてのエントリIDを取得するためにDBクエリを実行しています。これにより、単一値のオブジェクトの配列が返されます。次に、この配列をに渡して、foreach()
データを抽出/結合して、操作しやすくします。
上記のコードからののprint_r()
はここにあります:http: //pastebin.com/RZmfD2EU$single_entry
単一のエントリ:
Array
(
[0] => stdClass Object
(
[id] => 1983
[lead_id] => 86
[form_id] => 10
[field_number] => 34
[value] => 695
)
[1] => stdClass Object
(
[id] => 1982
[lead_id] => 86
[form_id] => 10
[field_number] => 39
[value] => 0
)
[2] => stdClass Object
(
[id] => 1981
[lead_id] => 86
[form_id] => 10
[field_number] => 40.1
[value] => Yes
)
... etc etc.
私が提供したコードでは、最終的な配列が何らかの形で崩壊しているように見えます。つまり、途中でエントリが失われます。
id
理想的には、データをそれらのkey
=>value
ペアに関連付けるデータが欲しいです。すなわち:
[id] => [lead_id]
[field_number#] => [field_number_value]
提供されたデータの最初の数行の実際の表現については、次のようになります。
Array (
[0] =>
(
[id] => 86
[34] => 695
[39] => 0
[40.1] => Yes
...etc
)
)
私がやっていることよりも、データをループして関連付けるためのより良い方法はありますか?私はPHPとMySQLが比較的新しい/悪いので、いくつかのガイダンスが欲しいです。