PHP에서 다차원 배열의 "간격"채우기

Sineverba

이 배열이 있습니다.

Array
(
    [0] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 28
                        )

                    [1] => Array
                        (
                            [v] => 1422.00
                        )

                )

        )

    [1] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 29
                        )

                    [1] => Array
                        (
                            [v] => 480.00
                        )

                )

        )

    [2] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 31
                        )

                    [1] => Array
                        (
                            [v] => 1472.00
                        )

                )

        )

    [3] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 32
                        )

                    [1] => Array
                        (
                            [v] => 910.00
                        )

                )

        )

    [4] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 33
                        )

                    [1] => Array
                        (
                            [v] => 740.00
                        )

                )

        )

    [5] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 34
                        )

                    [1] => Array
                        (
                            [v] => 380.00
                        )

                )

        )

    [6] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 35
                        )

                    [1] => Array
                        (
                            [v] => 640.00
                        )

                )

        )

    [7] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 36
                        )

                    [1] => Array
                        (
                            [v] => 340.00
                        )

                )

        )

    [8] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 37
                        )

                    [1] => Array
                        (
                            [v] => 1490.00
                        )

                )

        )

    [9] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 38
                        )

                    [1] => Array
                        (
                            [v] => 710.00
                        )

                )

        )

    [10] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 39
                        )

                    [1] => Array
                        (
                            [v] => 810.00
                        )

                )

        )

    [11] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 40
                        )

                    [1] => Array
                        (
                            [v] => 3152.00
                        )

                )

        )

)

참고로 V는 28 (선택한 연도의 주 수)부터 시작하고 30주는 누락되었습니다.

물론 데이터베이스의 다른 쿼리는 다른 결과를 반환 할 수 있습니다 (또는 "갭"없음).

그 간격을 어떻게 "채울"수 있습니까? (흥미 롭다면 1 년의 최대 주 수, 52 주 또는 53 주도 알고 있습니다.)

대단히 감사합니다.

편집하다

"30"이 배열에 삽입되고 값이 "0.00"(다음 참조) 인 다음과 같은 결과로 배열이됩니다.

Array
    (
        [0] => Array
            (
                [c] => Array
                    (
                        [0] => Array
                            (
                                [v] => 28
                            )

                        [1] => Array
                            (
                                [v] => 1422.00
                            )

                    )

            )

        [1] => Array
            (
                [c] => Array
                    (
                        [0] => Array
                            (
                                [v] => 29
                            )

                        [1] => Array
                            (
                                [v] => 480.00
                            )

                    )

            )

           [2] => Array
            (
                [c] => Array
                    (
                        [0] => Array
                            (
                                [v] => 30
                            )

                        [1] => Array
                            (
                                [v] => 0.00
                            )

                    )

            )
어윈 몰러

다음은 올바른 입력 배열 형식을 가정하는 솔루션입니다.

$org = array(
 ["c"=>[["v"=>28],["v"=>1422.00]]],
 ["c"=>[["v"=>29],["v"=>480.00]]],
 ["c"=>[["v"=>31],["v"=>1234.00]]],
 ["c"=>[["v"=>35],["v"=>432.00]]]
 // etc
);

$fixed = fixMe($org);

// I am expecting an array structured as in your example, so I am too lazy to check for errors.
function fixMe($arr){
    $foundWeekNums = array();
    foreach ($arr as $ind => $arr_1){
        $foundWeekNums[$arr_1["c"][0]["v"]] = $arr_1["c"][1]["v"];
    }

  // $keys are found weeknums
    $keys = array_keys($foundWeekNums);

    $formWeekNum = min($keys);
    $toWeekNum = max($keys);

    $newArr = array();

    for ($week = $formWeekNum; $week <= $toWeekNum; $week++){
        if (in_array($week, $keys)){
            $val = $foundWeekNums[$week];
        } else {
            $val = 0;
        }
        $newArr[] = ["c" => [["v" => $week],["v" => $val]]];
    }
    return $newArr;
}

echo "<pre>";
print_r($org);
echo "</pre>";

echo "<hr><pre>";
print_r($fixed);
echo "</pre>";

추신 : 52 개 또는 53 개까지 채우려면 여기에 숫자를 입력하면됩니다.

$toWeekNum = max($keys);

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

R의 이전 레코드와 다른 열 (간격 포함)을 기반으로 열에 채우기 (NA 값)

분류에서Dev

PHP 다차원 배열 채우기

분류에서Dev

직원 시계에 대한 PHP Sum 다차원 배열 날짜 간격

분류에서Dev

SQL Server에서 다중 다각형의 간격을 채우는 방법

분류에서Dev

Excel에서 시간 간격 채우기

분류에서Dev

행 사이의 큰 간격 채우기

분류에서Dev

행렬 행의 간격 채우기

분류에서Dev

Python 3.5의 배열에서 간격 범위 찾기

분류에서Dev

R에서 주문 (날짜 범위) 전후의 간격 채우기

분류에서Dev

FFMPEG에서 무음으로 오디오 파이프의 간격 채우기

분류에서Dev

PHP 다차원 배열에서 자바 스크립트 배열 채우기

분류에서Dev

PHP는 다차원 배열에서 드롭 다운 미리 채우기

분류에서Dev

JSON에서 다차원 배열 채우기

분류에서Dev

MySQL의 max (date)에서 간격 빼기

분류에서Dev

순서대로 행을 정렬하고 누락 된 행의 간격 채우기

분류에서Dev

두 간격 사이의 간격 찾기

분류에서Dev

D3에서 원 사이의 간격 줄이기 또는 늘리기

분류에서Dev

CSS 배경 채우기 반복 사이의 간격

분류에서Dev

다른 날짜 열에 배송 간격을 추가하여 열에 누락 된 날짜 값을 채 웁니다.

분류에서Dev

Matlab : for 루프없이 열 벡터에서 이동 간격을 사용하여 행렬 행 채우기

분류에서Dev

다른 하위 시퀀스 행에서 datetime 간의 간격 찾기

분류에서Dev

Swift에서 탐색 표시 줄과 캐리어 세부 정보 사이의 색상 간격 채우기

분류에서Dev

Java에서 단일 배열로 2 차원 배열 채우기

분류에서Dev

FFMPEG를 사용하여 원시 오디오 UDP 스트림의 간격 채우기

분류에서Dev

다차원 배열 채우기

분류에서Dev

Java 다차원 배열 채우기

분류에서Dev

우선 순위에 따라 세트로 간격 채우기

분류에서Dev

간격에서 값 찾기

분류에서Dev

c의 구조체에서 2 차원 배열의 선언 및 채우기

Related 관련 기사

  1. 1

    R의 이전 레코드와 다른 열 (간격 포함)을 기반으로 열에 채우기 (NA 값)

  2. 2

    PHP 다차원 배열 채우기

  3. 3

    직원 시계에 대한 PHP Sum 다차원 배열 날짜 간격

  4. 4

    SQL Server에서 다중 다각형의 간격을 채우는 방법

  5. 5

    Excel에서 시간 간격 채우기

  6. 6

    행 사이의 큰 간격 채우기

  7. 7

    행렬 행의 간격 채우기

  8. 8

    Python 3.5의 배열에서 간격 범위 찾기

  9. 9

    R에서 주문 (날짜 범위) 전후의 간격 채우기

  10. 10

    FFMPEG에서 무음으로 오디오 파이프의 간격 채우기

  11. 11

    PHP 다차원 배열에서 자바 스크립트 배열 채우기

  12. 12

    PHP는 다차원 배열에서 드롭 다운 미리 채우기

  13. 13

    JSON에서 다차원 배열 채우기

  14. 14

    MySQL의 max (date)에서 간격 빼기

  15. 15

    순서대로 행을 정렬하고 누락 된 행의 간격 채우기

  16. 16

    두 간격 사이의 간격 찾기

  17. 17

    D3에서 원 사이의 간격 줄이기 또는 늘리기

  18. 18

    CSS 배경 채우기 반복 사이의 간격

  19. 19

    다른 날짜 열에 배송 간격을 추가하여 열에 누락 된 날짜 값을 채 웁니다.

  20. 20

    Matlab : for 루프없이 열 벡터에서 이동 간격을 사용하여 행렬 행 채우기

  21. 21

    다른 하위 시퀀스 행에서 datetime 간의 간격 찾기

  22. 22

    Swift에서 탐색 표시 줄과 캐리어 세부 정보 사이의 색상 간격 채우기

  23. 23

    Java에서 단일 배열로 2 차원 배열 채우기

  24. 24

    FFMPEG를 사용하여 원시 오디오 UDP 스트림의 간격 채우기

  25. 25

    다차원 배열 채우기

  26. 26

    Java 다차원 배열 채우기

  27. 27

    우선 순위에 따라 세트로 간격 채우기

  28. 28

    간격에서 값 찾기

  29. 29

    c의 구조체에서 2 차원 배열의 선언 및 채우기

뜨겁다태그

보관