복붙노트

Javascript로 PHP 배열을 변환

PHP

Javascript로 PHP 배열을 변환

PHP 배열을 다음과 같은 형식으로 변환하려면 어떻게해야합니까?

Array
(
    [0] => 001-1234567
    [1] => 1234567
    [2] => 12345678
    [3] => 12345678
    [4] => 12345678
    [5] => AP1W3242
    [6] => AP7X1234
    [7] => AS1234
    [8] => MH9Z2324
    [9] => MX1234
    [10] => TN1A3242
    [11] => ZZ1234
)

아래의 형식으로 Javascript 배열에?

var cities = [
    "Aberdeen",
    "Ada",
    "Adamsville",
    "Addyston",
    "Adelphi",
    "Adena",
    "Adrian",
    "Akron",
    "Albany"
];

해결법

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

    1.Spudley의 대답은 괜찮습니다.

    Spudley의 대답은 괜찮습니다.

    PHP 5.2가 없다면 다음과 같이 사용할 수 있습니다 :

    function js_str($s)
    {
        return '"' . addcslashes($s, "\0..\37\"\\") . '"';
    }
    
    function js_array($array)
    {
        $temp = array_map('js_str', $array);
        return '[' . implode(',', $temp) . ']';
    }
    
    echo 'var cities = ', js_array($php_cities_array), ';';
    
  2. ==============================

    2.PHP와 JS에 대해 제공 한 두 개의 배열은 서로 관련이 없다고 가정합니다. 배열은 두 언어로 표시되는 예제 일뿐입니다. 분명히 문자와 숫자의 연속을 도시 이름으로 변환 할 수는 없습니다.

    PHP와 JS에 대해 제공 한 두 개의 배열은 서로 관련이 없다고 가정합니다. 배열은 두 언어로 표시되는 예제 일뿐입니다. 분명히 문자와 숫자의 연속을 도시 이름으로 변환 할 수는 없습니다.

    PHP는 PHP 배열을 Javascript 코드 인 json_encode ()로 변환하는 함수를 제공합니다. (기술적으로는 JSON 형식이고, JSON은 JavaScript Object Notation의 약자 임)

    다음과 같이 사용하십시오.

    <script type='text/javascript'>
    <?php
    $php_array = array('abc','def','ghi');
    $js_array = json_encode($php_array);
    echo "var javascript_array = ". $js_array . ";\n";
    ?>
    </script>
    

    자세한 내용은 위의 링크 된 매뉴얼 페이지를 참조하십시오.

    json_encode ()는 PHP 5.2 이상에서만 사용 가능하므로 이전 버전을 사용하는 경우 기존 버전을 사용해야합니다. PHP 매뉴얼 페이지에는 필요한 사람들이 작성한 함수가 포함 된 주석이 포함되어 있습니다 . (하지만 PHP 5.2 이전 버전을 사용하는 경우 최대한 빨리 업그레이드해야 함)

  3. ==============================

    3.멍청하고 단순한 :

    멍청하고 단순한 :

    var js_array = [<?php echo '"'.implode('","', $php_array).'"' ?>];
    
  4. ==============================

    4.json_encode의 출력이 자바 스크립트 리터럴이므로 parseJSON을 호출 할 필요가 없습니다. 그냥 js 변수에 할당하십시오.

    json_encode의 출력이 자바 스크립트 리터럴이므로 parseJSON을 호출 할 필요가 없습니다. 그냥 js 변수에 할당하십시오.

    <script type="text/javascript">
        //Assign php generated json to JavaScript variable
        var tempArray = <?php echo json_encode($php_array); ?>;
    
       //You will be able to access the properties as 
        alert(tempArray[0].Key);
    </script>
    
  5. ==============================

    5.당신은 PHP의 json_encode 함수를 사용하여 PHP 배열을 자바 스크립트로 변환 할 수 있습니다.

    당신은 PHP의 json_encode 함수를 사용하여 PHP 배열을 자바 스크립트로 변환 할 수 있습니다.

    <script type="text/javascript">
    
        var jArray= <?php echo json_encode($phpArray ); ?>;
    
        for(var i=0;i<12;i++){
            alert(jArray[i]);
        }
    
     </script>
    
  6. ==============================

    6.Javascript에서 PHP 배열을 사용하여 작업하는 가장 빠르고 쉬운 방법은 다음과 같습니다.

    Javascript에서 PHP 배열을 사용하여 작업하는 가장 빠르고 쉬운 방법은 다음과 같습니다.

    PHP :

    $php_arr = array('a','b','c','d');
    

    자바 스크립트 :

    //this gives me a JSON object
    js_arr = '<?php echo JSON_encode($php_arr);?>';
    
    
    //Depending on what I use it for I sometimes parse the json so I can work with a straight forward array:
    js_arr = JSON.parse('<?php echo JSON_encode($php_arr);?>');
    
  7. ==============================

    7.너무 간단 ...!

    너무 간단 ...!

    이 방법을 사용하십시오 :

    <?php echo json_encode($your_array); ?>; 
    

    laravel blade {{}}에서이 방법을 사용하십시오.

    {{ str_replace('&quot;', '', json_encode($your_array)) }} 
    

    연관된 어레이와 관련되지 않은 어레이에서 작동합니다.

  8. ==============================

    8.너도 이런 식으로 할 수있어.

    너도 이런 식으로 할 수있어.

    <script>  
        <?php 
            $php_array = array('abc','def','ghi');
            $code_array = json_encode($php_array);
        ?>  
        var array_code = <?php echo $code_array; ?>;
        console.log(array_code);
    </script>
    
  9. ==============================

    9.이것은 내 기능이다. 자바 스크립트는 PHP를 사용해야하고 그렇지 않으면 SESSION을 사용해야합니다.

    이것은 내 기능이다. 자바 스크립트는 PHP를 사용해야하고 그렇지 않으면 SESSION을 사용해야합니다.

    <?php
     $phpArray=array(1,2,3,4,5,6);
    ?>
    
    <div id="arrayCon" style="width:300px;"></div>
    
    <script type="text/javascript">
    var jsArray = new Array();
    <?php
     $numArray=count($phpArray);
     for($i=0;$i<$numArray;$i++){
      echo "jsArray[$i] = ". $phpArray[$i] . ";\n";
     }
    ?>
    $("#arrayCon").text(jsArray[1]);
    </script>
    

    마지막 행은 .... text (jsArray); "1,2,3,4,5,6"으로 표시됩니다.

  10. ==============================

    10.PHP4의 다차원 배열의 경우 Udo G가 게시 한 코드에 다음과 같은 추가 기능을 사용할 수 있습니다.

    PHP4의 다차원 배열의 경우 Udo G가 게시 한 코드에 다음과 같은 추가 기능을 사용할 수 있습니다.

    function js_str($s) {
       return '"'.addcslashes($s, "\0..\37\"\\").'"';
    }
    
    function js_array($array, $keys_array) {
      foreach ($array as $key => $value) {
        $new_keys_array = $keys_array;
        $new_keys_array[] = $key;
        if(is_array($value)) {          
          echo 'javascript_array';
          foreach($new_keys_array as $key) {
            echo '["'.$key.'"]';
          }
          echo ' = new Array();';
    
          js_array($value, $new_keys_array);
        } else {
          echo 'javascript_array';
          foreach($new_keys_array as $key) {
            echo '["'.$key.'"]';
          }
          echo ' = '.js_str($value).";";                        
        }
      } 
    }
    
    echo 'var javascript_array = new Array();';
    js_array($php_array, array());
    
  11. ==============================

    11.그것은 더 안전한 방법으로 행해질 수 있습니다.

    그것은 더 안전한 방법으로 행해질 수 있습니다.

    PHP 배열에 특수 문자가 포함되어 있으면 PHP에서 rawurlencode ()를 사용하고 JS에서 decodeURIComponent ()를 사용하여 이스케이프해야합니다. JSON을 기본 js로 구문 분석합니다. 이 시도:

    var data = JSON.parse(
            decodeURIComponent(
                "<?=rawurlencode(json_encode($data));?>"
            )
        );
    
    console.log(data);
    
  12. ==============================

    12.나는 똑같은 문제를 겪었고 이것이 내가 어떻게했는지이다.

    나는 똑같은 문제를 겪었고 이것이 내가 어떻게했는지이다.

    /*PHP FILE*/
    
    <?php
    
    $data = file_get_contents('http://yourrssdomain.com/rss');
    $data = simplexml_load_string($data);
    
    $articles = array();
    
    foreach($data->channel->item as $item){
    
        $articles[] = array(
    
            'title' => (string)$item->title,
            'description' => (string)$item ->description,
            'link' => (string)$item ->link, 
            'guid' => (string)$item ->guid,
            'pubdate' => (string)$item ->pubDate,
            'category' => (string)$item ->category,
    
        );  
    }
    
    // IF YOU PRINT_R THE ARTICLES ARRAY YOU WILL GET THE SAME KIND OF ARRAY THAT YOU ARE GETTING SO I CREATE AN OUTPUT STING AND WITH A FOR LOOP I ADD SOME CHARACTERS TO SPLIT LATER WITH JAVASCRIPT
    
    $output="";
    
    for($i = 0; $i < sizeof($articles); $i++){
    
        //# Items
        //| Attributes 
    
        if($i != 0) $output.="#"; /// IF NOT THE FIRST
    
    // IF NOT THE FIRST ITEM ADD '#' TO SEPARATE EACH ITEM AND THEN '|' TO SEPARATE EACH ATTRIBUTE OF THE ITEM 
    
        $output.=$articles[$i]['title']."|";
        $output.=$articles[$i]['description']."|";
        $output.=$articles[$i]['link']."|";
        $output.=$articles[$i]['guid']."|";
        $output.=$articles[$i]['pubdate']."|";
        $output.=$articles[$i]['category'];
    }
    
    echo $output;
    
    ?>
    /* php file */
    
    
    /*AJAX COMUNICATION*/
    
    $(document).ready(function(e) {
    
    /*AJAX COMUNICATION*/
    
    var prodlist= [];
    var attrlist= [];
    
      $.ajax({  
          type: "get",  
          url: "php/fromupnorthrss.php",  
          data: {feeding: "feedstest"},
          }).done(function(data) {
    
            prodlist= data.split('#');
    
            for(var i = 0; i < prodlist.length; i++){
    
                attrlist= prodlist[i].split('|');
    
                alert(attrlist[0]); /// NOW I CAN REACH EACH ELEMENT HOW I WANT TO. 
            }
       });
    });
    

    나는 그것이 도움이되기를 바랍니다.

  13. ==============================

    13.가짜 PHP 배열을 사용합니다.

    가짜 PHP 배열을 사용합니다.

    <?php 
           // instead to create your array like this
           $php_array = ["The","quick","brown","fox","jumps","over","the","lazy","dog"];
    
           // do it like this (a simple variable but with separator)
           $php_fake_array = "The,quick,brown,fox,jumps,over,the,lazy,dog";
    ?>
    
    <script type="text/javascript">
    
            // use the same separator for the JS split() function
            js_array = '<?php echo $php_fake_array; ?>'.split(',');
    
    </script>
    

    혹시 배열이 알려지지 않았다면 (이미 만들어 졌는지)

    <?php 
            $php_array = file('my_file.txt');
            $php_fake_array = "";
    
            // transform your array with concatenate like this
            foreach ($php_array as $cell){
    
                // since this array is unknown, use clever separator
                $php_fake_array .= $cell.",,,,,"; 
            }
    ?>
    
    <script type="text/javascript">
    
            // use the same separator for the JS split() function
            js_array = '<?php echo $php_fake_array; ?>'.split(',,,,,');
    
    </script>
    
  14. ==============================

    14.다차원 PHP 배열을 html 페이지 소스 코드에 직접 인쇄하고 들여 쓰기가 가능한 사람이 읽을 수있는 Javascript Object Notation (일명 JSON) 형식으로 작성해야하는 경우 http://php.net/manual에있는이 멋진 함수를 사용하십시오 /en/function.json-encode.php#102091 "bohwaz"라는 별명을 가진 사람이 코딩했습니다.

    다차원 PHP 배열을 html 페이지 소스 코드에 직접 인쇄하고 들여 쓰기가 가능한 사람이 읽을 수있는 Javascript Object Notation (일명 JSON) 형식으로 작성해야하는 경우 http://php.net/manual에있는이 멋진 함수를 사용하십시오 /en/function.json-encode.php#102091 "bohwaz"라는 별명을 가진 사람이 코딩했습니다.

    <?php
    
    function json_readable_encode($in, $indent = 0, $from_array = false)
    {
        $_myself = __FUNCTION__;
        $_escape = function ($str)
        {
            return preg_replace("!([\b\t\n\r\f\"\\'])!", "\\\\\\1", $str);
        };
    
        $out = '';
    
        foreach ($in as $key=>$value)
        {
            $out .= str_repeat("\t", $indent + 1);
            $out .= "\"".$_escape((string)$key)."\": ";
    
            if (is_object($value) || is_array($value))
            {
                $out .= "\n";
                $out .= $_myself($value, $indent + 1);
            }
            elseif (is_bool($value))
            {
                $out .= $value ? 'true' : 'false';
            }
            elseif (is_null($value))
            {
                $out .= 'null';
            }
            elseif (is_string($value))
            {
                $out .= "\"" . $_escape($value) ."\"";
            }
            else
            {
                $out .= $value;
            }
    
            $out .= ",\n";
        }
    
        if (!empty($out))
        {
            $out = substr($out, 0, -2);
        }
    
        $out = str_repeat("\t", $indent) . "{\n" . $out;
        $out .= "\n" . str_repeat("\t", $indent) . "}";
    
        return $out;
    }
    
    ?>       
    
  15. ==============================

    15.간단하게 유지하십시오.

    간단하게 유지하십시오.

    var jsObject = JSON.parse('<?= addslashes(json_encode($phpArray)) ?>');
    
  16. ==============================

    16.다음은 PHP 배열을 JavaScript 배열로 변환하는 아주 간단한 트릭입니다.

    다음은 PHP 배열을 JavaScript 배열로 변환하는 아주 간단한 트릭입니다.

    $array = array("one","two","three");
    

    아래 JS :

    // Use PHP tags for json_encode()
    
    var js_json =  json_encode($array);
    var js_json_string = JSON.stringify(js_json);
    var js_json_array = JSON.parse(js_json_string);
    
    alert(js_json_array.length);
    

    그것은 매력처럼 작동합니다.

  17. from https://stackoverflow.com/questions/5618925/convert-php-array-to-javascript by cc-by-sa and MIT license