2011-01-31 3 views
0

매우 쉽게 읽을 수 있고 쉽게 편집 할 수있는 항목 목록을 쉼표로만 구분하여 원하는 목록에 3 개의 임의 항목을 표시하고 싶다고 상상해보십시오. 배열이나 문자열은 중요하지 않습니다. 지금, 나는 다음과 같은 작업 (감사 webbiedave!)를 가지고Array 또는 String 목록을 더 읽기 쉬운 방식으로 섞는 방법?

$fruits = array('Mango', 'Banana', 'Cucumber', 'Pear', 'Peach', 'Coconut'); 

$keys = array_rand($fruits, 3); // get 3 random keys from your array 
foreach ($keys as $key) {   // cycle through the keys to get the values 
    echo $fruits[$key] . "<br/>"; 
} 

출력 : 개인적으로, 나는 매우 : 여기 미해결

Coconut 
Pear 
Banana 

만 일이 목록은 내가 바란 정도로 읽을 수없는 것입니다 많은 사람들이 따옴표없이 입력 목록을 선호합니다.

(Mango, Banana, Cucumber, Pear, Peach, Suthern Melon, Coconut)

이 쉽게 가능 : 바람직과 같이 의미 'Mango'에 관해서는 반대 Mango? 입력 해 주셔서 대단히 감사드립니다.

+3

'array (....) '에 대해 이야기하고 있다면, 이것을 바꿀 방법이 없습니다. 문자열은 PHP에서 따옴표로 묶어야합니다. 그 밖의 모든 것은 더 읽기 쉽거나 유지 보수가되지 않을 것입니다 ... –

+0

PHP에서 배열을 초기화하는 "더 정확한"방법은 사용자가 제공하는 인용 문자열의 배열입니다. 구문이 다른 경우 다른 언어로 전환하십시오. 루비를보십시오 :'fruits = % w {망고 바나나 오이 배 복숭아 수박 \ 멜론 코코넛}' – meagar

답변

5
$input = explode(',', 'Mango, Banana, Cucumber, Pear, Peach, Suthern Melon, Coconut'); 
$input = array_map('trim', $input); 
+0

이 아이디어에 감사드립니다! 이 목록에 1000 개의 항목이있을 때 배열에 비해 20 % 더 많은 문자가있는 경우 성능이 저하됩니까? '망고'가 '망고'보다 20 % 더 많습니까? – Sam

+0

어쨌든 항목을 하드 코딩하면 배열 정의가 가장 빠르고 확률이 높습니다. 만약 당신이 게으르다면, PHP는 문자열로부터 배열을 생성하게 할 수 있습니다 :'' – ThiefMaster

1

PHP 표준을 준수하지 않아도됩니다.

당신은 상수에게 같은

define(Mango, "Mango"); 

를 정의하고 배열을 사용하지만, 당신이 갖고 싶어하는 경우 상수는 모두 대문자

1

해야로서 즉, naming conventions of PHP을 물리 칠 것입니다 수 편집 가능 목록에서 구성 파일을 만들고 거기에서 목록을 읽는 것이 좋습니다.

예를 들어 YAMLsymfony YAML parser을 사용할 수 있습니다. 귀하의 목록은 다음과 같습니다 :

- Mango 
- Banana 
- Cucumber 
- Pear 
- Peach 
- Coconut 

이것은 코드와 데이터를 더 잘 구분할 수 있습니다. 또한 요소를 추가하거나 제거 할 때 실제 코드를 만질 필요가 없으므로 장기적으로 유지 관리가 더 쉬울 것입니다.

물론 여러분의 경우에는 한 줄에 하나의 항목으로 된 간단한 텍스트 파일을 가지고 배열로 파일을 읽을 수 있습니다.

성능에 대해 걱정이된다면 생성 된 배열을 디스크 또는 이와 유사한 형식으로 직렬화 할 수 있습니다.