PHP-반복 및 배열에 값 추가, 끝에 도달하면 루프백하여 나머지 값 추가

inviz

우선 제목에 대해 미안합니다. 나는 이것을 몇 마디로 더 잘 설명하는 방법을 몰랐습니다.

유사한 질문에 대한 답변이 여기에 있습니다. PHP-문자열을 순서대로 재 배열

그러나 이것은 (일종) 나를 위해 작동하지 않습니다.

나는 포커 플레이어가있는 배열을 가지고 있으며, 누가 버튼을 누르는지와 같은 그들에 대한 많은 정보를 이미 알고 있습니다. 누가 버튼 위치에 있는지에 따라 모든 플레이어에게 다른 값을 할당하고 싶습니다.

이것은 내가 지금까지 만든 것이지만 의도 한대로 작동하지 않습니다.

function playerPosition($numplayers, $BTNPlayer, $players) {

    switch ($numplayers) {
        case '3' :
            $gameStates = array("BTN", "SB", "BB");
            break;
        case '4' :
            $gameStates = array("BTN", "SB", "BB", "CO");
            break;
        case '5' :
            $gameStates = array("BTN", "SB", "BB", "MP", "CO");
            break;
        case '6' :
            $gameStates = array("BTN", "SB", "BB", "UTG", "MP", "CO");
            break;
        case '7' :
            $gameStates = array("BTN", "SB", "BB", "UTG", "UTG", "MP", "CO");
            break;
        case '8' :
            $gameStates = array("BTN", "SB", "BB", "UTG", "UTG", "MP", "MP", "CO");
            break;
        case '9' :
            $gameStates = array("BTN", "SB", "BB", "UTG", "UTG", "UTG", "MP", "MP", "CO");
            break;
        case '10' :
            $gameStates = array("BTN", "SB", "BB", "UTG", "UTG", "UTG", "MP", "MP", "MP", "CO");
            break;
    }
    $looped = false;
    $found = false;
    $foundAt = 0;
    $c = 0;

    for ($x = 0; $x < count($players); $x++) {

        if($players[$x]['name'] == $BTNPlayer && !$found) {
            $players[$x]['position'] = $gameStates[$c];
            $found = true;
            $foundAt = $x;

        } else {
            if($found) {
                if ($x != $foundAt)
                    $players[$x]['position'] = $gameStates[$c++];
            }

            if ($found && !$looped) {
                $x = -1;
                $looped = true;
            }
        }
    }

    return $players;
}

$players = array(array('seat' => '1','name' => 'Player1', 'stack' => '2.68', 'status' => '1'), 
                 array('seat' => '2','name' => 'Player2', 'stack' => '7.23', 'status' => '1'), 
                 array('seat' => '3','name' => 'Player3', 'stack' => '0.00', 'status' => '0'), 
                 array('seat' => '4','name' => 'Player4', 'stack' => '1.03', 'status' => '1'), 
                 array('seat' => '5','name' => 'Player5', 'stack' => '0.63', 'status' => '1'), 
                 array('seat' => '6','name' => 'Player6', 'stack' => '1.23', 'status' => '1'), 
                 array('seat' => '7','name' => 'Player7', 'stack' => '2.24', 'status' => '1'), 
                 array('seat' => '8','name' => 'Player8', 'stack' => '3.47', 'status' => '1'), 
                 array('seat' => '9','name' => 'Player9', 'stack' => '5.04', 'status' => '1')
                );

$BTNPlayer = 'Player4';
$positions = playerPosition(9, $BTNPlayer, $players);
echo '<pre>';
print_r($positions);

결과 :

Array
(
    [0] => Array
        (
            [seat] => 1
            [name] => Player1
            [stack] => 2.68
            [status] => 1
            [position] => SB
        )

    [1] => Array
        (
            [seat] => 2
            [name] => Player2
            [stack] => 7.23
            [status] => 1
            [position] => BB
        )

    [2] => Array
        (
            [seat] => 3
            [name] => Player3
            [stack] => 0.00
            [status] => 0
            [position] => UTG
        )

    [3] => Array
        (
            [seat] => 4
            [name] => Player4
            [stack] => 1.03
            [status] => 1
            [position] => BTN
        )

    [4] => Array
        (
            [seat] => 5
            [name] => Player5
            [stack] => 0.63
            [status] => 1
            [position] => UTG
        )

    [5] => Array
        (
            [seat] => 6
            [name] => Player6
            [stack] => 1.23
            [status] => 1
            [position] => UTG
        )

    [6] => Array
        (
            [seat] => 7
            [name] => Player7
            [stack] => 2.24
            [status] => 1
            [position] => MP
        )

    [7] => Array
        (
            [seat] => 8
            [name] => Player8
            [stack] => 3.47
            [status] => 1
            [position] => MP
        )

    [8] => Array
        (
            [seat] => 9
            [name] => Player9
            [stack] => 5.04
            [status] => 1
            [position] => CO
        )
)

보시다시피 정렬 기능이 의도 한대로 작동하지 않습니다.

Justus Krapp

이렇게하면 원하는 결과가 생성됩니다.

function playerPosition($BTNPlayer, $players) {
    $gameStates = array("BTN", "SB", "BB", "UTG", "UTG", "UTG", "MP", "MP", "MP", "CO");
    if(count($players) > count($gameStates))
        throw new Exception('Max player number' .count($gameStates));

    //first find the player
    $btnPlayerIndex = getPlayerIndexByName($BTNPlayer, $players);

    //now we change the array so we start with the btn player
    $sortedPlayers = array_merge(
        array_slice($players, $btnPlayerIndex),
        array_slice($players, 0, $btnPlayerIndex)
    );

    //now we assign your game states
    foreach($sortedPlayers AS $index => &$player){
        $player['position'] = $gameStates[$index];
    }
    return $sortedPlayers;
    }

function getPlayerIndexByName($BTNPlayer, $players){
    foreach($players AS $index => $player){
        if($player['name'] == $BTNPlayer) return $index;
    }
    return false;
}

$players = array(array('seat' => '1','name' => 'Player1', 'stack' => '2.68', 'status' => '1'),
    array('seat' => '2','name' => 'Player2', 'stack' => '7.23', 'status' => '1'),
    array('seat' => '3','name' => 'Player3', 'stack' => '0.00', 'status' => '0'),
    array('seat' => '4','name' => 'Player4', 'stack' => '1.03', 'status' => '1'),
    array('seat' => '5','name' => 'Player5', 'stack' => '0.63', 'status' => '1'),
    array('seat' => '6','name' => 'Player6', 'stack' => '1.23', 'status' => '1'),
    array('seat' => '7','name' => 'Player7', 'stack' => '2.24', 'status' => '1'),
    array('seat' => '8','name' => 'Player8', 'stack' => '3.47', 'status' => '1'),
    array('seat' => '9','name' => 'Player9', 'stack' => '5.04', 'status' => '1')
);

$BTNPlayer = 'Player5';
$positions = playerPosition($BTNPlayer, $players);
echo '<pre>';
print_r($positions);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++ 배열 끝에 하나의 값 추가

분류에서Dev

자바 스크립트. 배열 끝에 새 값을 추가하고 나머지는 이동

분류에서Dev

PHP는 각 루프 반복으로 배열에 키 값을 추가합니다.

분류에서Dev

값을 기반으로 배열 항목을 추가하고 PHP에서 중복 값 제거

분류에서Dev

PHP가 배열에서 값을 추출하고 다른 배열로 복원

분류에서Dev

PHP-값이 일치하면 배열에서 배열에 값 추가

분류에서Dev

루프를 사용하지 않고 배열에 값 추가

분류에서Dev

반복적으로 배열에 값을 추가하고 값을 바꿉니다.

분류에서Dev

배열을 반복하고 PHP를 사용하여 HTML에 동적으로 값 추가

분류에서Dev

PHP foreach 루프를 사용하여 JSON 배열에서 특정 반복 값 가져 오기

분류에서Dev

하나의 열에 여러 값 추가

분류에서Dev

PHP에서 배열에 추가하는 동안 값 추가 수행

분류에서Dev

사전을 반복하고 모든 사전 값에 값 추가

분류에서Dev

for 루프를 사용하여 배열 목록에 이중 배열 값 추가

분류에서Dev

PHP-작동하지 않는 foreach 루프의 배열에 고유 한 값만 추가

분류에서Dev

PHP : 개수를 늘리지 않고 다차원 배열에 일반적으로 값을 추가하는 방법

분류에서Dev

PHP : 배열에 문자열 값 추가

분류에서Dev

기존 데이터 프레임을 반복하는 함수 생성 및 새 열에 값 추가

분류에서Dev

ID를 기반으로 한 순환 / 라운드 루프 (특정 ID로 시작하여 나머지 ID 추가, 특정 ID에 도달하면 중단)

분류에서Dev

중복 값을 제거하고 나머지 행 값을 추가합니다.

분류에서Dev

숫자 값을 기준으로 배열을 정렬하지만 부울이면 끝에 추가

분류에서Dev

자바 루프 및 맵에 값 추가

분류에서Dev

값이 없거나 배열의 끝에 도달하지 않는 한 PHP 계속 루프

분류에서Dev

여러 확인란을 반복하고 선택한 값을 배열에 추가하여 Sharepoint에 다시 쓰기

분류에서Dev

XSL 및 XML을 사용하여 FOP에서 루프를 통해 값 추가

분류에서Dev

배열의 요소 중 하나에 값 추가

분류에서Dev

smali 파일 : 배열에 하나의 값 추가

분류에서Dev

PHP에서 배열에 중복 값 추가

분류에서Dev

for 루프를 사용하여 이전 값에 값 추가

Related 관련 기사

  1. 1

    C ++ 배열 끝에 하나의 값 추가

  2. 2

    자바 스크립트. 배열 끝에 새 값을 추가하고 나머지는 이동

  3. 3

    PHP는 각 루프 반복으로 배열에 키 값을 추가합니다.

  4. 4

    값을 기반으로 배열 항목을 추가하고 PHP에서 중복 값 제거

  5. 5

    PHP가 배열에서 값을 추출하고 다른 배열로 복원

  6. 6

    PHP-값이 일치하면 배열에서 배열에 값 추가

  7. 7

    루프를 사용하지 않고 배열에 값 추가

  8. 8

    반복적으로 배열에 값을 추가하고 값을 바꿉니다.

  9. 9

    배열을 반복하고 PHP를 사용하여 HTML에 동적으로 값 추가

  10. 10

    PHP foreach 루프를 사용하여 JSON 배열에서 특정 반복 값 가져 오기

  11. 11

    하나의 열에 여러 값 추가

  12. 12

    PHP에서 배열에 추가하는 동안 값 추가 수행

  13. 13

    사전을 반복하고 모든 사전 값에 값 추가

  14. 14

    for 루프를 사용하여 배열 목록에 이중 배열 값 추가

  15. 15

    PHP-작동하지 않는 foreach 루프의 배열에 고유 한 값만 추가

  16. 16

    PHP : 개수를 늘리지 않고 다차원 배열에 일반적으로 값을 추가하는 방법

  17. 17

    PHP : 배열에 문자열 값 추가

  18. 18

    기존 데이터 프레임을 반복하는 함수 생성 및 새 열에 값 추가

  19. 19

    ID를 기반으로 한 순환 / 라운드 루프 (특정 ID로 시작하여 나머지 ID 추가, 특정 ID에 도달하면 중단)

  20. 20

    중복 값을 제거하고 나머지 행 값을 추가합니다.

  21. 21

    숫자 값을 기준으로 배열을 정렬하지만 부울이면 끝에 추가

  22. 22

    자바 루프 및 맵에 값 추가

  23. 23

    값이 없거나 배열의 끝에 도달하지 않는 한 PHP 계속 루프

  24. 24

    여러 확인란을 반복하고 선택한 값을 배열에 추가하여 Sharepoint에 다시 쓰기

  25. 25

    XSL 및 XML을 사용하여 FOP에서 루프를 통해 값 추가

  26. 26

    배열의 요소 중 하나에 값 추가

  27. 27

    smali 파일 : 배열에 하나의 값 추가

  28. 28

    PHP에서 배열에 중복 값 추가

  29. 29

    for 루프를 사용하여 이전 값에 값 추가

뜨겁다태그

보관