2013-05-23 4 views
0

코드를 작성하려고하는데 약간의 도움이 될 수 있습니다. 5 색의 테스트 파일이 있다고 가정 해 보겠습니다. 나는 단지 각 색깔을 10 번 사용하기를 원한다.배열의 항목이 PHP에서 사용 된 횟수를 계산하십시오.

EDIT : 내 설정을 더 반영하도록 코드를 편집했습니다. 주로 10 번 이상 사용되지 않은 5 가지 색상 중 1 가지를 반환 할 수있는 기능을 만들어야합니다.

$colors = array_map("trim", file("colorlist.txt")); //loads all my colors 

// echos all my colors 
foreach($colors as $color){ 
    echo ''.$color; 
} 

function checklimit($string){ 

BS CODING...... 
$currentcolor = getcolor(); 

} 


function getcolor() { 
$totalpercolor = 10; 
    If all $colors $totalused = $totalpercolor { 
     exit; 
    } else { 
    shuffle($colors) 
    Return a single color who's $totalused < $totalpercolor; 
    $color's $totalused = $totalused++ 
    } 
} 


$result = mysql_query("SELECT whatever FROM $table_name WHERE doesntmatter IS NULL"); 
while ($row = mysql_fetch_assoc($results)){ 
    $data = checklimit($string); 
} 

조직 :

$colors = array(file("colorlist.txt")); 

$i = 1; 
foreach($colors as $color){ 
    if color[i] <= 10 { 
    var color[i] = 0++; 
    i++; 
    } else { 
    If all colors = 10 { 
     end; 
    } else { 
      start loop over, get new color 
    } 
    } 
} 

나는이 그것에 대해 갈 수있는 올바른 방법으로하지 않습니다 확신합니다. 그래서 어떤 도움이 될 것입니다.

+0

var_dump ($ colors) 그래서 배열 구조를 볼 수 있습니까? –

+0

당신은 foreach 루프보다는 이것을하기위한 함수를 만들고 싶을 것입니다. 그리고 다시, 당신의 질문에 기반하여 무엇을하려고하는지 이해하기가 어렵습니다. –

+0

이것은 끔찍한 코드입니다 .. 유효한 PHP 스크립트가 아닙니다 ... – Baba

답변

0
foreach($colors as $color){ 
    if($color_num[$color]) 
    $color_num[$color]++; 
    else $color_num[$color] = 1; 
} 

루프 끝 부분에는 각 색상의 개수가 포함 된 $ color_num 배열이 있습니다. 이제 루프 내 검사를 추가 할 수 있습니다. if($color_num[$color] >= 10) ...

- 실제로 유효한 코드를 게시해야 건설적인 답변을 제공 할 수 있습니다.

0

당신은 단순히 당신이 modulus

$total = count($colors); 
$limit = 10; 
for($i = 0; $i < $limit; $i ++) { 
    echo $colors[$i % $total], PHP_EOL; 
} 

또는 무한 반복자를 사용할 수 있습니다

가 색상을 다시 사용하려면 색상

$colors = array_map("trim", file("log.txt")); 
printf("%s\n", implode(",", $colors)); //red,blue,orage,black,purble 

를로드 할 수

$limit = 10; 
$iterator = new InfiniteIterator(new ArrayIterator($colors)); 
foreach(new LimitIterator($iterator, 0, $limit) as $color) { 
    echo $color, PHP_EOL; 
} 

보 일 내가 당신이 원하는 아무 생각

red 
blue 
orage 
black 
purble 
red 
blue 
orage 
black 
purble 
0

을 반환, 그래서 난 그냥 세 당신이 원하는 수 있습니다 경우 답변 해 드리겠습니다 : 각 collor 10 번 인쇄 한 후 다음 색상

로 이동해야하는 경우 을
$colors = array_map("trim", file('colorlist.txt')); 
foreach ($colors as $color) 
{ 
    for ($i=1; $i<=10; $i++) 
     print $color . PHP_EOL; 
} 

윌 출력 :

blue 
blue 
blue 
blue 
blue 
blue 
blue 
blue 
blue 
blue 
green 
green 
green 
green 
green 
green 
green 
green 
green 
green 
(the other 3 colors) 

당신은 출력 순서에 따라 색상이 필요한 경우 :

을 0
$colors = array_map("trim", file('colorlist.txt')); 
for ($i=1; $i<=10; $i++) 
{ 
    foreach($colors as $color) 
     print $color . PHP_EOL; 
} 

윌 출력 당신에게 :

blue 
green 
red 
pink 
gray 
blue 
green 
red 
pink 
gray 

그리고 당신은 색상을 무작위로 출력해야하고, 각 색상 10 배 표시해야하는 경우 :

$colors_file = array_map("trim", file('colorlist.txt')); 
foreach ($colors_file as $color) 
    $colors[] = array($color, 0); 

while(!empty($colors)) 
{ 
    $index = rand(0,count($colors)-1); 
    echo $colors[$index][0] . PHP_EOL; 
    if (++$colors[$index][1] == 19) 
    { 
     unset($colors[$index]); 
     $colors = array_values($colors); 
    } 
} 

의지를 출력 :

pink 
red 
red 
blue 
gray 
blue 
green 
blue 
gray 
gray 
green 
red 
red 
관련 문제