2012-03-15 2 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

왜 $ collected_data_sql을 출력하고 IDE에서 테스트하여 SQL이 올바른지 먼저 확인하십시오. 나는 당신의 오류가 당신의 어디에서 시작되었는지 믿습니다.

1

$collected_data의 배열 색인을 고려해야하므로 list()가 작동하지 않습니다. 그럴 경우에만 작동 array('John', 'Smith', '[email protected]');

결과를 반복하고 '값'키에서 값을 제거해야합니다.

관련 문제