0

私はこれに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が比較的新しい/悪いので、いくつかのガイダンスが欲しいです。

4

1 に答える 1

0

正しく理解しているかどうかはわかりませんが、指定したキーに値を割り当てたい場合は…</ p>

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);
        $lead_id = $entry['lead_id'];
        $full_array[$lead_id] = $entry_array;
    }
}
于 2012-10-09T02:07:40.793 に答える