2014-07-26 5 views
0

PHP 프로젝트에서 작업 중입니다. & MySQL의 경우 확장 가능한 필드가있는 테이블이 있습니다. 나는 이것을 처리하기위한 배열 시스템을 찾기위한 방법을 찾고 있었지만 확실하지는 않다. 나는 그것을 위해 코드를 작성할 사람을 찾고있는 것이 아니라 그것을 다루는 가장 좋은 방법에 대한 의견을 원합니다.약간의 배열 방향 지정 (PHP의 동적 배열)

특급 :

TABLE Stage one: 
ID OPTION1 OPTION2 
1  dirt  drop 
2  ground lake 
3  clay  pond 

지금 내가 할 무엇을 찾고 설명하기 : 내 배열은 모든 필드를보고 한때 각각의 배열을 만들 수있는 방법을 만들어야합니다.

특급 : 내가 지금처럼 내 데이터베이스에 새 필드를 추가하는 경우

$arrayone(dirt,ground,clay); 
$arraytwo(drop,lake,pond); 

그러나 :

특급은

TABLE Stage one: 
ID OPTION1 OPTION2 OPTION3 
1  dirt  drop  sky 
2  ground lake  cloud 
3  clay  pond  sun 

나는 새 필드를 볼 수 있도록해야합니다 프로 시저에 생성 될 다른 배열 ..

특급 :

$arrayone(dirt,ground,clay); 
$arraytwo(drop,lake,pond); 
$arraythree(sky,cloud,sun); 

내가 말했듯이 아무도 모른다면 내가 찾고있는 부분이 무엇인지, 내가 할 수있는 부분이 있으면 내가 읽을 수있는 몇 가지 참조를 가르쳐 주겠다고 말한 것.

나는이 EXP가 이러한 두 개의 문자열을 가지고

$arrayone(1,5); 
$arraytwo(2,6); 
$arraythree(3,7); 
$arrayfour(4,8); 

같은 배열을 구축하는 내 PHP로 이제

$stringfromdb = "1,2,3,4"; 
$stringfromdb = "5,6,7,8"; 

내가 원하는을하지만 난 문자열 나중에 등을 더 추가 할 수 있다면

$stringfromdb = "1,2,3,4,9,10"; 
$stringfromdb = "5,6,7,8,11,12"; 

문자열의 새로 추가 된 섹션을 기반으로 새 배열을 만들려면이 코드가 필요합니다.

$arrayone(1,5); 
$arraytwo(2,6); 
$arraythree(3,7); 
$arrayfour(4,8); 
$arrayfive(9,11); 
$arraysix(10,12); 

나는 어떤 형태의 explode(); 구분 기호에서 스크립트를 분할합니다. 이것이 전혀 도움이 될 지 확신하지 못했습니다. 죄송합니다 ...

+0

필드의 확장이 가능니까? 그게 뭐야? 좋게 들리지 않는다. 정규 표현식을 참조하십시오. – Strawberry

+0

지금은 6 개의 필드가 있지만 코드를 재 편집하는 새로운 필드를 추가 할 수 있기를 원합니다 ... – chris

+0

U는이 작업을 위해 '상호 참조 테이블'을 사용해야합니다. 옵션 ('option_id, title'), 값 ('value_id, title')을 포함하는 하나의 테이블 ('option_id, value_id')을 포함하는 하나의 테이블 – DarkBee

답변

1

당신의 목표를 완전히 이해했는지는 확실하지 않지만 비슷한 구조의 프로젝트에서 작업했습니다. :

id | field | value 
----+-------+------ 
1 | opt1 | dirt 
1 | opt2 | ground 
1 | opt3 | clay 
2 | opt1 | apple 
2 | opt2 | banana 
2 | opt3 | melon 

모두 단일 테이블에 꼭 맞습니다. 테이블에 합성 기본 키가 있습니다 ((id, field)). 이 두 열에 인덱스를 추가하는 것도 좋은 방법 일 수 있습니다.

고정 된 수의 열이 있기 때문에 "필드"를 추가하는 것은 각 ID에 대해 하나의 항목을 추가하는 것만 큼 쉽습니다.

항목에 필요한 필드 수와 필드 수를 설명하는 "구조"테이블을 가질 수도 있습니다.

분명히 SQL 쿼리는 지금 가지고있는 간단한 테이블처럼 간단하지는 않지만 훨씬 더 실용적입니다.

+0

줄이기 위해 하나의 테이블에 3 개의 테이블을 사용합니다. 데이터의 이중화 – DarkBee

+0

네, 필드의 숫자 ID를 가진 필드 테이블을 갖는 것이 맞을 것 같습니다. 더 효율적으로 만들 수 있지만 복잡성이 추가됩니다. – MightyPork

0

정상적인 2 차원 어레이처럼 들리네 - $ array = array (array ('dirt', 'ground', 'clay'), array ('drop', 'lake', 'pond') .. .), 질문을 이해하지 못하면 ...