2012-01-27 7 views
1

그래서 이것은 나를 미치게합니다. mySQL에서 내 테이블 행을 가져 와서 정렬해야하지만, 그런 다음 다시 단일 배열로 출력해야합니다. 대부분이 이후의 코드는이를 받아들이 기 위해 작성되었습니다.PHP MySQL 다차원 배열을 배열

여기 내 코드입니다. 의견이 있으면 알려주십시오.

<?php 

include 'connect.php'; 


$query = mysql_query("SELECT * FROM users"); 

while ($data = mysql_fetch_assoc($query)) 
{ 
    $newarray[]=$data; 
    $dbusername = $data['username']; 
    $dbpassword = $data['password']; 
    $logid = $data['id']; 
    print_r ($data); 
    echo "<br/>"; 
} 

foreach ($newarray as $key => $row) { 
$volume[$key] = $row['password']; 
} 

array_multisort($volume, SORT_ASC, $newarray); 
print_r($newarray); 

?> 

이것의 결과는 다음과 같습니다

Array ( 

[0] => Array ([id] => 4 [rating] => 18 [password] => 1981 [username] => 212060064) 
[1] => Array ([id] => 2 [rating] => 6 [password] => 1983 [username] => 212060062) 
[2] => Array ([id] => 3 [rating] => 5 [password] => 1984 [username] => 212060063) 
[3] => Array ([id] => 1 [rating] => 3 [password] => 1988 [username] => 212060061) 

) 

이 같은 출력을 필요하지만 :

Array ([id] => 4 [rating] => 18 [password] => 1981 [username] => 212060064) 
Array ([id] => 2 [rating] => 6 [password] => 1983 [username] => 212060062) 
Array ([id] => 3 [rating] => 5 [password] => 1984 [username] => 212060063) 
Array ([id] => 1 [rating] => 3 [password] => 1988 [username] => 212060061) 
+1

을 정렬? 신분증? 사용자 이름? – Josh

+0

필요한 출력물은 목록처럼 보이지만, 출력물은 목록의 특정 표현입니다 (출력물을 반복 할 수 있습니다). 결과를 사용하는 코드는 어떻게 생겼을 까? – mqsoh

+0

개별적으로 저장하려면 각 배열에 대한 변수를 만드는 것보다. 4 개의 배열을 함께 저장하려면 다른 배열이나 객체에 저장해야합니다. 나머지 코드는 어떻게 보이게 할 수 있습니다. –

답변

2

연설에 따르면

이것의 결과는 다음과 같습니다

Array ( 

[0] => Array ([id] => 4 [rating] => 18 [password] => 1981 [username] => 212060064) 
[1] => Array ([id] => 2 [rating] => 6 [password] => 1983 [username] => 212060062) 
[2] => Array ([id] => 3 [rating] => 5 [password] => 1984 [username] => 212060063) 
[3] => Array ([id] => 1 [rating] => 3 [password] => 1988 [username] => 212060061) 

) 

그러나 다음과 같이 출력해야합니다.

Array ([id] => 4 [rating] => 18 [password] => 1981 [username] => 212060064) 
Array ([id] => 2 [rating] => 6 [password] => 1983 [username] => 212060062) 
Array ([id] => 3 [rating] => 5 [password] => 1984 [username] => 212060063) 
Array ([id] => 1 [rating] => 3 [password] => 1988 [username] => 212060061) 

SORT의 방식에는 차이가 없습니다. 마지막 코드 줄에서

은 대체 :

print_r($newarray); 

기준 : 평가로

foreach($newarray as $child_array) 
{ 
    print_r($child_array); 
} 
2

가장 쉬운 것은 아마 SQL에서 직접 정렬하는 것 :

SELECT * FROM users ORDER BY id 

개인적으로 시도해보십시오. o array_multisort로 고생하는 것을 피하십시오. 난 아직 usort보다 _multisort하거나 데이터베이스 레이어가 처리하도록하는 것이 더 쉬운 문제를 보지 못했습니다.

+0

+1 array_multisort()!나는 때때로 usort 솔루션보다 더 효율적이라는 것을 알고 있지만, 가장 단순한 배열을 제외하고는 array_multisort()는이 강력한 함수의 신비한 결과에 대항하여 머리를 쓰러 뜨리면 삶을 더 어렵게 만듭니다. 그리고 코드는 일반적으로 한 눈에 상당히 큰 논리적 인 리드를 수행하기 때문에 읽기 쉽지 않습니다. –

+0

그러나 데이터가 이미 4 개의 다른 파일에서 덤프되었습니다. 내 파일에는 실제로 쿼리가 포함되어 있지 않습니다. $ row 변수 만. 아이디어는 내가 너무 많은 쿼리를 가지고 있으며 서버에 스트레스를 풀려고합니다. – user1170117

0

별도의 어레이가 필요합니까? 이 코드는 하나의 배열을 만들 것입니다 :

첫 번째 실행에 이중 $$가 record0 $됩니다
include 'connect.php'; 
$query = mysql_query("SELECT * FROM users"); 
$x = 0; 
while($data = mysql_fetch_assoc($query)){ 
    $variable_name = 'record'.$x; 
    $$variable_name = $data; 
    $x++; 
} 
print_r($record0); 
print_r($record1); 
//etc...