2015-01-06 1 views
2

인 배열에서 값 가져 오기 다음 문제 : mysql 기반 언어 시스템을 구축하고 싶습니다.PHP 값이

로딩 시간을 줄이고 성능을 향상시키기 위해 모든 언어 구문을 배열로 가져 오는 것이 가장 좋습니다 (mysqli 패치 배열에서 발생). 그런 다음 언어 용어가 필요한 경우 전역 변수로 배열을 사용하여 함수를 호출합니다.

배열에 대한 나의 기능 : 지금은이 배열있어

$sql  = $db->query('SELECT * FROM lang_phrases WHERE phraseLanguageId = 1'); 
$phrases = array(); 

while($row = $sql->fetch_array()) { 
    $phrases[] = $row; 
} 

: 궁금

, 내가 어떻게 할 수 있습니다

array(2) { 
    [0]=> array(8) { 
     [0]=> string(1) "1" 
     ["phraseId"]=> string(1) "1" 
     [1]=> string(1) "1" 
     ["phraseLanguageId"]=> string(1) "1" 
     [2]=> string(4) "HOME" 
     ["phraseKey"]=> string(4) "HOME" 
     [3]=> string(10) "Homepage" 
     ["phraseContent"]=> string(10) "Homepage" 
    } 
    [1]=> array(8) { 
     [0]=> string(1) "2" 
     ["phraseId"]=> string(1) "2" 
     [1]=> string(1) "1" 
     ["phraseLanguageId"]=> string(1) "1" 
     [2]=> string(4) "BACK" 
     ["phraseKey"]=> string(4) "BACK" 
     [3]=> string(6) "Back" 
     ["phraseContent"]=> string(6) "Back" 
    } 
} 

그리고 제 기능을 먹으 렴 이제 함수에서 "phraseKey"$ key 배열을 검색하고 값을 가져 옵니까? 힌트가 있습니까? 또는 각 쿼리마다 각 구문을 간단히 선택해야합니까 (로드 당 100 개 쿼리로 성능 문제가 발생합니까?).

환호 & 감사합니다.

+0

로를 검색 할 수 있습니다에

while($row = $sql->fetch_array()) { $phrases[$row['phraseKey']] = $row; } 

와 문구를 가져 오지하는 것이 좋습니다 수 있습니다, 이것은 아마도 할 수있는 훨씬 낮은 오버 헤드를해야합니다 만약 당신이 서버를 충분히 제어 할 수 있다면 (아마도 PO 파일을 바꿀 때 소프트 재시작이 필요하기 때문에 전용 서버가 필요할 것이다.) http://php.net/manual/ ko/book.gettext.php – CD001

답변

2

내가 그런 다음 function l($key) 당신은 그냥 옆으로

$t = isset($phrases[$key]) ? $phrases[$key] : null 
+0

죄송합니다. 모든 것을 잊어 버리십시오. 대단한 작품! 감사! – Max

3

잘못된 구조입니다. 문구 ID와 언어로 배열을 키우는 것은 어떻습니까? 예 :

$translations = array(
    'HOME' => array(
     'english' => 'Home', 
     'french' => 'Maison', 
     'german' => 'Haus" 
    etc... 

이렇게하면 검색 할 필요가 없습니다. 언어/구 (phrase) ID로 바로 찾으십시오.

+0

나는 당신이 모든 것을로드하는 것을 좋아하지 않는다. 언어를이 배열 – cmorrissey

+0

6 개 중 하나, 나머지 절반은 6 개입니다. OP가 가지고있는 문구/언어의 수에 전적으로 달려 있습니다. 어떤 시점에서이 어레이의 오버 헤드는이 어레이의 일부만 가지고 반복적 인 쿼리를 수행하는 오버 헤드보다 중요합니다. –