2011-04-05 3 views
1

기본적으로 PHP 배열의 여러 임의 항목을 사용자가 해당 배열에서 만드는 선택 항목에 추가해야합니다. 그래서 예를 들어, 배열이 아닌 경우 :PHP 배열 조작 - 요소를 선택한 다음 남은 항목을 뒤섞는 방법

"kiwi, orange, pineapple, apple, grape, starfruit, kumquat" 

사용자 픽 "파인애플"나는 나머지 배열 항목에서 추가 과일의 X 번호를 선택합니다. 핵심은 "파인애플"이 선택 항목과 추가 과일 중 하나가 될 수 없기 때문에 선택 항목으로 선택되면 배열에서 제외시켜야한다는 것입니다.

Selection: pineapple 
Your additional fruits: kiwi, grape, orange 

하지 선택 : 파인애플 귀하의 추가 과일 : 키위, 파인애플, 포도

실제로 파일 이름이 아닌 과일과 함께이 일을 해요,하지만이 방법을 설명하기 위해 쉽게 보인다.

나는 무작위로 선택 부분을 할 수 있다고 생각하지만, 은 PHP에서 주어진 배열로부터 선택된 항목을 제거하는 방법을 잘 모르겠습니다. 제안이나 아이디어에 대해 대단히 고마워.

+0

이 비슷를 [http://stackoverflow.com/questions/ 2448964/php-how-to-remove-specific-element-from-an-array] (http://stackoverflow.com/questions/2448964/php-how-to-remove-specific-element-from-an-array)) – Steve

답변

3

미리 선택한 항목의 정확한 위치를 모르는 경우 색인을 찾으려면 array_search()을 사용하십시오. 배열에서 unset()으로 복사 한 다음 무작위로 선택하십시오. 당신은 파인애플의 인덱스를 알고 있다면

$key = array_search('pineapple', $fruits); 
unset($fruits[$key]); 

// Random selection here 
0

, 당신은 단지 해제 할 수있다. 이 배열에서 제거 : unset($array[$index]);

0
당신은 요소를 제거 할 수 있습니다

(정수, 예를 들면 $ 배열을 사용하여 참조된다 [5])를 사용하여 array_splice

array array_splice (array &$input , int $offset [, int $length = 0 [, mixed $replacement ]])

http://php.net/manual/en/function.array-splice.php

당신은 혼합 할 수 있습니다 배열을 사용하여 배열을 사용하십시오.

bool shuffle (array &$array)

http://php.net/manual/en/function.shuffle.php

이 작업을 수행해야합니다!

+0

이 접근 방식의 문제점은 요소를 식별하기가 어려울 것이라는 점입니다. 그것은 배열의 어느 위치 에나있을 수 있으며 배열은 다양합니다. 그러나 아래 옵션 (karim79 's)은 ​​사람의 선택을 아는 것 외에는 거의 작동하지 않는 것처럼 보입니다. 하지만 고마워 !! – Dave

+0

배열에서 제거 된 항목의 인덱스를 알고 있다고 가정합니다. –

0

다른 방법은 직접 선택된 원소 (들)을 포함하지 않는 배열 예 반환 array_diff을 사용하는 것이다 :

$theFruit = 'pineapple'; 
$remainder = array_diff($arr, array($theFruit)); 

//shuffle 
shuffle($remainder); 

// now do something with the first three from the shuffled remainder 
print_r(array_slice($remainder, 0, 3)); 
+0

이것은 매우 간단하고 매우 기대되는 것처럼 보입니다! array_diff 옵션이 있다는 것을 몰랐습니다! 고맙습니다! 이제 실제로 작동하는지 확인해야합니다. ^^ – Dave