복붙노트

자바 스크립트 함수에 PHP 배열 전달 [duplicate]

PHP

자바 스크립트 함수에 PHP 배열 전달 [duplicate]

JavaScript 변수에 PHP 배열 변수를 가져 오려고합니다.

이것은 내 코드입니다.

<html>
    <head>
        <script type="text/javascript">
              function drawChart(row,day,week,month,date)
              {
                  // Some code...
              }
        </script>
    </head>

    <body>
        <?php
            for($counter = 0; $counter<count($au); $counter++)
            {
                switch($au[$counter]->id)
                {
                    case pageID.'/insights/page_active_users/day':
                        $day[] = $au[$counter]->value;
                    break;
                    case pageID.'/insights/page_active_users/week':
                        $week[] = $au[$counter]->value;
                    break;
                    case pageID.'/insights/page_active_users/month':
                        $month[] = $au[$counter]->value;
                    break;
                }
            }
        ?>
        <script>
            drawChart(600/50, '<?php echo $day; ?>', '<?php echo $week; ?>', '<?php echo $month; ?>', '<?php echo createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day')))); ?>');
        </script>
    </body>
</html>

나는 PHP 배열의 가치를 얻을 수 없다.

이 문제를 어떻게 수정합니까?

해결법

  1. ==============================

    1.JSON을 사용하십시오.

    JSON을 사용하십시오.

    다음 예제에서 $ php_variable은 모든 PHP 변수가 될 수 있습니다.

    <script type="text/javascript">
        var obj = <?php echo json_encode($php_variable); ?>;
    </script>
    

    코드에서 다음과 같이 사용할 수 있습니다.

    drawChart(600/50, <?php echo json_encode($day); ?>, ...)
    

    (AJAX 요청에서와 같이) JSON 문자열에서 객체를 파싱해야하는 경우 안전한 방법은 JSON.parse (..)를 사용하는 것입니다.

    var s = "<JSON-String>";
    var obj = JSON.parse(s);
    
  2. ==============================

    2.json_encode PHP 함수를 사용하여 PHP 배열을 JavaScript에 전달할 수 있습니다.

    json_encode PHP 함수를 사용하여 PHP 배열을 JavaScript에 전달할 수 있습니다.

    <?php
        $phpArray = array(
            0 => "Mon", 
            1 => "Tue", 
            2 => "Wed", 
            3 => "Thu",
            4 => "Fri", 
            5 => "Sat",
            6 => "Sun",
        )
    ?>
    
    <script type="text/javascript">
    
        var jArray = <?php echo json_encode($phpArray); ?>;
    
        for(var i=0; i<jArray.length; i++){
            alert(jArray[i]);
        }
    
     </script>
    
  3. ==============================

    3.두 플랫폼 간의 데이터 전송에는 공통 데이터 형식이 필요합니다. JSON은 교차 플랫폼 데이터를 보내는 공통 전역 형식입니다.

    두 플랫폼 간의 데이터 전송에는 공통 데이터 형식이 필요합니다. JSON은 교차 플랫폼 데이터를 보내는 공통 전역 형식입니다.

    drawChart(600/50, JSON.parse('<?php echo json_encode($day); ?>'), JSON.parse('<?php echo json_encode($week); ?>'), JSON.parse('<?php echo json_encode($month); ?>'), JSON.parse('<?php echo json_encode(createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day'))))); ?>'))
    

    귀하의 질문에 대한 답변입니다. 대답은 매우 복잡해 보일 수 있습니다. 여기서는 서버 측과 클라이언트 측 간의 통신을 설명하는 간단한 예제를 볼 수 있습니다.

    $employee = array(
     "employee_id" => 10011,
       "Name" => "Nathan",
       "Skills" =>
        array(
               "analyzing",
               "documentation" =>
                array(
                  "desktop",
                    "mobile"
                 )
            )
    );
    

    JSON 형식으로 변환하면 데이터를 클라이언트 응용 프로그램 (예 : JavaScript)으로 다시 보내야합니다. PHP에는 json_encode () 함수가 내장되어있어 모든 데이터를 JSON 형식으로 변환 할 수 있습니다. json_encode 함수의 출력은 다음과 같은 문자열입니다.

    {
        "employee_id": 10011,
        "Name": "Nathan",
        "Skills": {
            "0": "analyzing",
            "documentation": [
                "desktop",
                "mobile"
            ]
        }
    }
    

    클라이언트 측에서 성공 함수는 JSON 문자열을 가져옵니다. Javascript에는 JSON 객체로 문자열을 다시 변환 할 수있는 JSON 구문 분석 함수 JSON.parse ()도 있습니다.

    $.ajax({
            type: 'POST',
            headers: {
                "cache-control": "no-cache"
            },
            url: "employee.php",
            async: false,
            cache: false,
            data: {
                employee_id: 10011
            },
            success: function (jsonString) {
                var employeeData = JSON.parse(jsonString); // employeeData variable contains employee array.
        });
    
  4. ==============================

    4.다음 예제에서는 PHP 배열을 사용하고 PHP 배열을 사용하여 JavaScript 배열을 만듭니다.

    다음 예제에서는 PHP 배열을 사용하고 PHP 배열을 사용하여 JavaScript 배열을 만듭니다.

    <script type="javascript">
        day = new Array(<?php echo implode(',', $day); ?>);
        week = new Array(<?php echo implode(',',$week); ?>);
        month = new Array(<?php echo implode(',',$month); ?>);
    
        <!--  Then pass it to the JavaScript function:   -->
    
        drawChart(<?php echo count($day); ?>, day, week, month);
    </script>
    
  5. from https://stackoverflow.com/questions/4885737/pass-a-php-array-to-a-javascript-function by cc-by-sa and MIT license