나는 여기서하고있는 일에 대해 머리를 감싸는 데 열심히 노력하고있다. 그러나 약간의 어려움이있다 ... 어떤 도움이나 방향이 크게 감사 할 것이다.특정 비율의 기회와 관련된 PHP 변수는 어떻게 선택합니까?
그래서 미리 정의한 배열 (훌륭하게 $ array라고 함)에 따라 추출한 테이블에 일부 값이 있습니다. 이것이 내가 한 일입니다.
foreach ($array as $value) {
$query = "SELECT * FROM b_table WHERE levelname='$value'";
$result = runquery($query);
$num = mysql_numrows($result);
$i=0;
while ($i < 1) {
[email protected]_result($result,$i,"evochance"); // These values are integers that will add up to 100. So in one example, $evochance would be 60, 15 and 25 if there were 3 values for the 3 $value that were returned.
$i++;
}
이제 어디로 갈 것인가를 알 수 없습니다. $ evochance는 각 $ 값에 링크 된 확률을 나타냅니다. 일부 기능을 통해 유리한 60 %를 선택한 경우 연결된 다른 $ 값을 다른 테이블에 삽입합니다.
는 나는 그것이 도움이되지 않습니다 알고 있지만 내가 생각 해낸 가장이었다 :
if (mt_rand(1,100)<$evochance) {
$valid = "True";
}
else {
$valid = "False";
}
echo "$value chance: $evochance ($valid)<br />\n"; // Added just to see the output.
그럼이 내가 무엇을 찾고 있어요 분명하지 않다. 그리고 나는이 방법으로 역동적 인 비율을 가질 수 없습니다. 또한 두 경우 모두 False를 출력하고 다른 경우에는 True를 출력합니다.
그래서 나는 로프를 배우는 아마추어이고 나는 그것에 가야만했습니다. 어떤 방향으로 환영합니다. 감사합니다 =)
이 ** 편집 3 (정리) : 내 약한 설명에 대 한 미안 해요
@cdburgess; 나는 이것을 이해하려고 노력하고있다. 당신이 그것을 이해할 수 있기를 바랍니다. 내 배열에 무엇의
예 : $array = array('one', 'two', 'three')
글쎄의 위 같은 $array
(가 항상하지 않지만 3이 스크립트가 실행될 때마다) 3 개 값이있는 가정 해 봅시다. 특정 필드 ('levelname')에있는 값을 포함하는 테이블의 모든 레코드를 가져오고 있습니다. 이러한 값은 각 레코드마다 고유하므로 값이있는 레코드 수만큼 레코드를 가져옵니다. 이제 해당 테이블의 각 레코드에는 evochance
이라는 필드가 있습니다. 해당 필드에는 1에서 100 사이의 단일 숫자가 있습니다. 이전에 쿼리 한 3 개의 레코드 (foreach()
)는 evochance
입니다. 필요한 기능은 'evochance'에 따라 사용할 레코드를 결정합니다. 포함 된 번호. 그것이 99라면,이 스크립트가 실행되는 99 %의 시간 동안 사용되기를 바랍니다.
그러나 ... 단일 숫자에 대해 간단한 가중치 함수가 필요하지 않습니다. n 비율 (n = 배열의 값의 수) 중에서 어떤 비율 = true를 선택해야합니다. 이렇게하면 true로 반환하는 백분율은 levelname
과 관련되므로 선택할 수 있습니다 (또는 적어도 내가하려는 것).
또한 명확한 설명을 위해 : 선택한 레코드는 해당 필드 중 하나에 고유 한 정보를 포함합니다 (이는 이전에 테이블을 쿼리 한 $array
의 고유 한 값 중 하나입니다). 그런 다음 해당 값으로 다른 테이블 (a_table)을 업데이트하려고합니다.
내 머리를 감쌀 수없는 유일한 방법은 확률 선택 기능입니다 ... 그것은 나에게 상당히 복잡합니다. 그리고 나는 그것에 대해 매우 궁금해 할 것입니다. 다른 방법이 있다면 분명히 시도해 볼 것입니다. 내가받은 대답은 : 나는 지금 그 일을 내리고 내가 할 수있는 일을보고 있습니다.내가 바로 당신을 읽으면 각각의 일부 확률이 선택되고 함께 귀하의 의견을 주셔서 감사합니다 =) **
달성하고자하는 최종 결과는 무엇입니까? 즉,이 코드가 무엇을 성취해야하는지에 대한 높은 수준의 설명. 번호를 저글링하는 경우 단일 쿼리로 데이터베이스에서 똑같은 작업을 수행 할 수 있습니다. – deceze
첫 번째 변경 : 입력을 MySQL로 이스케이프 처리하십시오! –
@Deal 많은 제안 된 변경 사항을 많이 볼 수 있습니다 :) – alex