2012-08-15 6 views
0

이것은 PHP를 사용하여 mysql 데이터를 쿼리 할 때 자주 발생하는 문제이며,보다 효율적인 솔루션이 있는지 알고 싶습니다. 나는 단지 예를 열 '아이디'와 '가격', 나는이 '평면'형식의 선호에 대한 두 개의 데이터 열을 필요로 할 때 :PHP 다차원 배열 (키 -> 값 변경)

[{"id 1":"price 1"},{"id 2":"price 2"},{"id 3":"price 3"}, ...] 

을 그리고 평소 :

array(
    id 1 => price 1, 
    id 2 => price 2, 
    id 3 => price 3, 
    ... 
); 

또는 JSON에서

솔루션과 같이, 두 번 반복하는 것입니다 : 작업을 수행

require_once('server/connection.php'); 
$info = mysql_query("SELECT id, price FROM table"); 

$array1 = array(); 
while ($row = mysql_fetch_assoc($info)) { 
    $array1[] = array(
     'id' => $row['id'], 
     'price' => $row['price'] 
    ); 
} 
mysql_close($con); 

$array2 = array(); 
foreach ($array1 as $key => $value) { 
    $array2[$key][$value['id']] = $value['price']; 
} 

print json_encode($array2); 

,하지만 난이 코드는 그 목적을 위해 너무 긴 생각하고, 더 나은 방법이 있어야합니다 - 난 단지 루프를 하나 개의 배열을 가질 수 있도록 . 어떤 제안?

+0

두 번째 루프는 오히려 2 차원 배열을 만드는 것입니다. – FatalError

답변

0

while ($row = mysql_fetch_assoc($info)) { 
    $array1[] = array(
     'id '.$row['id'] => 'price '.$row['price'] 
    ); 
} 

print json_encode($array1); 
+0

감사합니다. 이것은 생각했던 것보다 훨씬 간단했습니다! – gnitemouse

0
$result = array(); 
while ($row = mysql_fetch_assoc($info)) { 
    $result[$row['id']] = $row['price']; 
} 
print_r($result); 
0
require_once('server/connection.php'); 
$info = mysql_query("SELECT id, price FROM table"); 

$array1 = array(); 
while ($row = mysql_fetch_assoc($info)) 
    $array1[$row['id']] = $row['price']; 
mysql_close($con); 

print json_encode($array1); 

주 루프를 단순화 할 수 있습니다 : 당신의 $의 배열 2는 2 개 차원 배열입니다. 작동하는 경우 자바 스크립트 코드를 변경하여 플랫 형식 즉, 위의 코드 생성물을 처리해야합니다.

[{"id 1":"price 1"},{"id 2":"price 2"},{"id 3":"price 3"}, ...] 
+0

잘 작동합니다. 그것이 2 차원 배열임을 지적 해 주셔서 감사합니다. – gnitemouse