2013-05-09 4 views
2

테이블에서 배열로 데이터를 가져 오려고하는데 속도 문제 때문에 foreach 루프를 사용하고 싶습니다. foreach 루프가있는 테이블에서 데이터를 가져 오는 방법

나는

function getRowsAssoc() 
{ 
    $ret = array(); 
    while (($temp = mysql_fetch_assoc($this->result)) !== FALSE) 
    { 
     if (count($temp) > 0) 
     { 
      $ret[] = $temp; 
     } 
    } 
    if (count($ret) > 0) 
    { 
     return $ret; 
    } 
    else 
    { 
     return FALSE; 
    } 
} 

그러나이에 대한 결과를 사용하여 시도했다.

Array (
    [0] => Array ([MySKU] => BB1-3500-48 [UPC] => 721343100171) 
    [1] => Array ([MySKU] => BC7-3501-19 [UPC] => 721343103516) 
    [2] => Array ([MySKU] => BC7-3501-95 [UPC] => 721343103523) 
    [3] => Array ([MySKU] => BB1-3502-12 [UPC] => 721343114000) 
    [4] => Array ([MySKU] => bc7-2370-03 [UPC] => 721343121602) 
) 

이 문제는 대신 연합회 배열을 반환하는 그렇게 지금은 아이템 코드의 데이터를 얻을 수없는 그것의 상단에 번호가 배열을 추가하는 것입니다.

I 키를 지정이

Array (
     [MySKU] => BB1-3500-48 [UPC] => 721343100171 
     [MySKU] => BC7-3501-19 [UPC] => 721343103516 
     [MySKU] => BC7-3501-95 [UPC] => 721343103523 
     [MySKU] => BB1-3502-12 [UPC] => 721343114000 
     [MySKU] => bc7-2370-03 [UPC] => 721343121602 
    ) 
+0

참고 : 사용 mysqli 또는 PDO 대신 MySQL의 (5.5로 추천되고 있지 않습니다). – Aleph

+0

"속도 문제"... foreach와 while 또는 for의 속도 차이는 적어도 인간이 눈에 띄는 속도 문제는 아니라고 생각합니다. – aleation

+0

'foreach'는 기존 배열을 반복하는 데 사용됩니다. 이 경우,'while'을 사용하여 배열을 만들고있는 것입니다. 사용할 수있는 배열이 없으므로 'foreach'로 대체 할 수 없습니다. – Lukas

답변

1

처럼 좀하고 싶습니다 : 당신이 알아야 할 모든

function getRowsAssoc() 
{ 
    $ret = array(); 
    while (($temp = mysql_fetch_assoc($this->result)) !== FALSE) 
    { 
     if (count($temp) > 0) 
     { 
      $ret[$temp["MySKU"]] = $temp; 
     } 
    } 
    if (count($ret) > 0) 
    { 
     return $ret; 
    } 
    else 
    { 
     return FALSE; 
    } 
} 
+0

이것이 효과가 있습니다! 감사 – MarkGreen

0

먼저, 결과 배열의 구조를 보는 방법. 구조에 대한

Array 
(
    [MySKU-x] => UPC-x 
    [MySKU-y] => UPC-y 
    [MySKU-z] => UPC-z 
) 

처럼 당신은이를 사용할 수 있습니다

function getRowsAssoc() 
{ 
    $return = array(); 
    while (($temp = mysql_fetch_assoc($this->result)) !== false) 
    { 
     if (count($temp) > 0) 
     { 
      $return[$temp['MySKU']] = $temp['UPC']; 
     } 
    } 
    if (count($return) > 0) 
    { 
     return $return; 
    } 
    else 
    { 
     return false; 
    } 
} 
관련 문제