2012-11-20 2 views
0

이 게시물의 제목을 지정하는 방법에 대해 잘 모르겠습니다.PHP 파일의 배열 요소 순서 변경

각 키패드 쌍의 배열을 포함하는 일련의 국제화 문서를 상속했습니다. 나는 방법론이 이상하지 않다는 것을 알고 있지만, 그것은 내가 할 수있는 시간과 자원, 역할을 감안할 때 갇혀있는 것입니다. 이 목록은 손으로 만들어졌으며 요구 사항을 따라 잡기 위해 끊임없이 추가되었습니다. 아래 예제는 단순화되어 있으며 ~ 21 개의 언어 파일이 있으며 각 파일에는 100 개 이상의 항목이 있습니다. 대부분의 경우

'download_video' => 'Descargar Video', 
'download_high' => 'Alta', 
'download_med' => 'Media', 
'download_low' => 'Baja', 

, 요소가 정렬됩니다 : 다른 파일은 다음과 같은 것을해야합니다 동안

'download_high' => 'Vysoké', 
'download_low' => 'Nízké', 
'download_med' => 'Strední', 
'download_video' => 'Stáhnout video', 

:

하나 개의 파일에서 배열 요소에게 다음과 같은 것을해야합니다 일관되게,하지만 예외가 많이 있으며 파일 유지 관리가 복잡합니다. IDE 또는 메모장 ++ 플러그인을 통해 이러한 배열의 순서/형식을 일관되게 유지할 수있는 방법이 있는지 궁금 해서요. 알파벳 순서로 잘 번역되지 않는 논리 그룹이 있으므로 사전 순으로 정렬하고 싶지는 않습니다. 변수의 일부만이 이름 공간을 갖기 때문에 정렬. 수작업으로 처리하는 것은 거의 불가능합니다. 그러나 주문을 지정하고 텍스트 처리 도구 일괄 처리 파일을 처리하는 방법이 있다면 좋을 것입니다. 나는 PHP에 익숙한 사람이 아니기 때문에 아주 간단한 것이 아니라면 코드를 통해이 작업을 수행하는 것이 가치가 있을지 모른다.

+0

왜 스프레드 시트를 사용하지 않고 알파벳순으로 정렬 할 수 있습니까? (이것이 완벽하지 않은 경우 두 번째 열에서 수식을 만들어 정렬 기준으로 변경할 수 있습니다)? – wezten

+0

코드가 어지러운 것처럼 보이는지 예를 들려 줄 수 있습니까? – mowwwalker

+0

사용할 수있는 정규 표현식을 추가했습니다. 수정하려는 코드에 대해 알지 못해도 조정할 수 없습니다. – mowwwalker

답변

1

상황에 따라 필자는 필요에 따라 반자동으로 처리합니다. 즉, 이러한 파일을 유지 관리하는 비용이 청구되는 것처럼 들리며 유지 관리에 따라 정렬이 문제가됩니다.

<?php 
$something = array(
    'download_video' => 'Descargar Video', 
    'download_high' => 'Alta', 
    ... 
    'download_med' => 'Media', 
    'download_low' => 'Baja', 
); 
  1. 문제 떠들썩한 파티에서, 또는 당신이 뭔가를 정렬하는 것을 선호하지만 통해 sort lang.es.php 명령을 각 언어 파일에 대한

    는 같은 형식.
  2. 편집 할 수 있도록 파일을 엽니 다.
  3. 배열 선언을 삭제하십시오.
  4. # 1에서 정렬 된 줄을 복사/붙여 넣기하십시오.

솔직히 말해서, 전임자가 효과적으로 이와 같은 코드를 하드 코딩하는 것은 매우 나쁜 생각이었습니다. 이것이 CSV, XML, pg/mySQL 등을 통해 저장되어 있다면 데이터 형식을 이해하는 편집기를 적어도 호출 할 수 있다면 훨씬 더 낫습니다.

+0

어젯밤에 해결책을 찾았습니다. 너무 구체적이어서 게시하는 것을 신경 쓰지 않을 것입니다. 나는 그것이 더 많은 사람들을 위해 일할 것이라고 생각하면서 당신의 대답을 일반적인 해결책으로 점검 할 것입니다. 그리고 네, 스케일링을위한 최악의 선택 인 하드 코딩 된 연관 배열에 대해서는 완전히 동의합니다. 이 프로젝트는 하나 였고 고객은 리팩토링 업체에 비용을 지불하지 않을 것이므로 나는 그것에 매달 렸습니다. – Shane

0

지속적으로 늘어나는리스트를 가지려면 배열과 PHP 파일 등을 사용하지 않는 것이 좋습니다. MySQL을 설정하고 원하는 매개 변수로 데이터베이스에서 가져 오기 위해 몇 분 걸리십시오. NEAT, FAST, EFFECIENT AND SCALABLE.

+0

감사하지만 가능하지 않습니다. 그것은 내가해야 할 일의 범위를 넘어서는 것입니다. – Shane

2

PHP에는 var_export이라는 기능이 있습니다. 코드를 실행 한 다음 함수를 사용하여 코드를 인쇄 할 수 있습니다.

개인적으로, 나는 그것을하기 위해 메모장에서 약간의 정규식을 실행할 것입니다.

편집 : notepad ++에서 찾기/바꾸기를 할 수 있습니다. 에서

분야 필드 "교체"넣어에서는 \s*'(.+?)'\s*=>\s*'(.+?)'\s*(?:(,)|\s*$)\s*

을 넣어 "을 찾으십시오"이 같은 변합니다 '$1' => '$2'$3\n

:

'download_high'   =>  'Vysoké', 
    'download_low'=>      

    'Nízké', 
'download_med' 
=> 
'Strední' 
, 
    'download_video' => 'Stáhnout video', 
'filter_by' => 'Filtrovat podle' 
, 




'footer_contact' => 'Kontakt' 

'download_high' => 'Vysoké', 
'download_low' => 'Nízké', 
'download_med' => 'Strední', 
'download_video' => 'Stáhnout video', 
'filter_by' => 'Filtrovat podle', 
'footer_contact' => 'Kontakt' 

로를

* note : 이것은 모든 키 s 및 값은 작은 따옴표를 사용하며 키 또는 값에는 이스케이프 된 작은 따옴표가 없습니다.

+0

정규식과 메모장에 대해 흥미로운 점은 ++, 그 해결책이 무엇인지에 대해 좀 더 자세히 설명해 주시겠습니까? – Shane

+0

@Shane, 나는 당신을 위해 뭔가를 채찍질 할 것이다 :) – mowwwalker

+0

지금 시도. +1이 상관없이 내 질문에 대답, 감사합니다! – Shane

0

내 제안은 모든 배열을 데이터베이스에로드하여 스크립트를보다 쉽게 ​​유지 관리 할 수있는 스크립트를 작성하는 것입니다. 물론 데이터베이스 테이블/필드가 UTF-8 문자 세트 및 데이터 정렬에 맞게 설정되었는지 확인해야합니다.

+0

제안에 감사하고 예, 더 나은 해결책이 될 것입니다. 이 프로젝트에서 맡은 역할과 책임을 설명 해주는 옵션은 아닙니다. – Shane

+0

이 배열은 언어별로 각각 다른 파일입니까? –

+0

그래, 나는 아마 일종의 동적 인 포함을 통해 연결되어있을 것 같아. 나는 목록 전체를 살피는 데 많은 시간을 할애 할 수 없으므로 가능한 한 쉽고 빠르게 할 수있는 더러운 방법을 찾고 있습니다.:) – Shane

0

당신은 이미 PHP 배열에 데이터를 가져 왔음을 이해합니다. 이제 키를 정렬하기 위해이 작업을 수행 할 수 있습니다.이렇게하면 순서가 일관되게 나타납니다.

ksort($array); 
+1

나는 문제가 그가 런타임에 배열 키의 순서에 대해 신경 쓰지 않는다고 생각한다. 그는 코드 자체에서 순서가 어떻게되는지 우려하고 있습니다. –

+0

까다로운 것은 여기서 나는 실제 PHP 파일의 배열을 정렬하는 것이지 데이터 자체는 정렬하지 않는다. 이러한 파일을 편집 할 때 인간의 요소가있어 이러한 파일의 정렬 순서가 불일치하게 만듭니다. 그것은 어떤 종류의 loop/array.push 메소드와 비슷할 것이고 파일로 출력 할 것입니다. PHP에서 어떻게 보이는지 모르겠습니다. – Shane