2013-11-23 3 views
0

이 스크립트는 배열 내부의 요소를 선택하여 인쇄합니다.더 나은 솔루션?

<?php 
    $word = array("THE", "QUICK", "BROWN", "FOX", "JUMPS"); 
    $rand_keys = array_rand($word, 2); 
    echo $word[$rand_keys[0]]; 
    echo $word[$rand_keys[1]]; 
?> 

작동하지만 난

array_diff() 일부 기능을 사용하고 있습니다; 요소 목록에서 예를 제거 $word 변수에서 내 스크립트 검색에와

:

$ 단어 = 배열 ​​("를", "QUICK", "BROWN", "FOX" , "점프");

$ sentence = array ("QUICK", "BROWN");

$ input = array_diff ($ word, $ sentence);

그래서 $input에는 array("THE", "FOX", "JUMPS");이 포함되어 있습니까?

와 나는 이와 같은 스크립트에 적용이 배열에 3 요소가 포함되어 있기 때문에

<?php 
    $word = array("THE", "QUICK", "BROWN", "FOX", "JUMPS"); 
    $sentence = array("QUICK", "BROWN"); 
    $input = array_diff($word, $sentence); 
    $rand_keys = array_rand($input, 2); 
    echo $input[$rand_keys[0]]; 
    echo $input[$rand_keys[1]]; 
?> 

그것은 또한 작동합니다. 내가 더 많은 일을 할 경우 필터링

$ 입력

변수는 한 요소의 예를 포함

: $input는 스크립트가 더 이상 실행하고 점점 오류 좋아하지 않을 array("BROWN"); 포함

경고 : array_rand() : 두 번째 인수는 1과 배열의 요소 수 사이 여야합니다.

공지 사항 : 정의되지 않은 인덱스 :

공지 사항에서 : 정의되지 않은 인덱스 : 배열 요소는 1 포함 된 경우

에서 어떻게 스크립트를 실행할 수 있습니까?

나는 지금까지이 방법을 사용해 왔지만 더 나은 해결책이 있습니까?

<?php 
$word = array("THE", "QUICK", "BROWN", "FOX", "JUMPS"); 

if(count($input) >= 2) 
{ 
    $rand_keys = array_rand($input, 2); 
    echo $input[$rand_keys[0]] . "\n"; 
    echo $input[$rand_keys[1]] . "\n"; 
} 
else 
{ 
    echo end($input); 
} 
?> 
+0

이 스크립트의 목표는 무엇입니까? 즉 최종 산출물은 무엇입니까? 길이 1의 배열에서 임의의 키를 선택하려고 시도하는 것은 실제로 의미가 없습니다. – cori

+0

최종 출력은 스크립트가 실행될 때 스크립트가 실행될 때처럼 1 요소 만 포함합니다. 마지막 요소는 오류가 표시되지 않습니다. – Destiny

답변

1

오류 메시지는 간단하고 이해하기 쉽습니다. array_rand()의 두 번째 인수에서 더 많은 수의 요소를 사용할 수 없습니다.

이 함수를 호출하기 전에 요소 수를 확인한 다음 요소가 하나 인 경우 array_rand()을 호출하지 않고이 요소를 사용하십시오. 또한 요소가 전혀없는 상황에 대비하십시오.

+0

내 질문에 대한 대답을하고 내게 더 나은 해결책이 있습니까? for 루프를 사용하는 것과 같은가요? – Destiny

+0

@Destiny 루프로 뭔가를 검사하지 마십시오. –

관련 문제