source

php 어레이를 Javascript로 변환합니다.

gigabyte 2023. 2. 1. 21:51
반응형

php 어레이를 Javascript로 변환합니다.

이런 형식으로 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"
];

PHP와 JS에 대해 제공한 두 어레이는 관련이 없으며 두 언어에서 어레이가 어떻게 보이는지 보여주는 예에 불과하다고 가정합니다.문자나 숫자의 순서를 도시 이름으로 변환할 수 없는 것은 확실합니다.

PHP는 PHP 어레이를 Javascript 코드로 변환하는 기능을 제공합니다. (기술적으로는 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보다 오래된 버전을 사용하는 경우 최대한 빨리 업그레이드해야 합니다.)

스퍼들리의 대답은 괜찮다.

보안 알림: 다음 사항은 더 이상 필요하지 않습니다.

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), ';';

단순하고 단순함:

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

parseJ를 호출할 필요는 없습니다.출력이 javascript 리터럴이므로 SON.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>

php의 함수를 사용하여 php 어레이를 javascript로 변환할 수 있습니다.

<?php $phpArray = 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'
    )
?>
<script type="text/javascript">

    var jArray= <?php echo json_encode($phpArray ); ?>;

    for(var i=0;i<12;i++){
        alert(jArray[i]);
    }

 </script>

Javascript에서 PHP 어레이를 사용하는 가장 빠르고 쉬운 방법은 다음과 같습니다.

PHP:

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

Javascript:

//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);?>');

매우 간단합니다.

자바스크립트:

var arrayJavascript = <?php echo json_encode($arrayPhp) ?>;

PHP 어레이를 Javascript로 변환

안부 전해 주세요!

너무 심플해...!

다음 방법을 사용합니다.

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

라라벨 블레이드 {{ }}에서는 다음 방법을 사용합니다.

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

관련지어져 있는 어레이와 관련지어져 있지 않은 어레이에 대해서 동작하고 있습니다.

이 방법으로도 할 수 있습니다.

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

이게 제 기능이에요.JavaScript는 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"으로 표시됩니다.

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());

그것은 더 안전한 방법으로 할 수 있다.

PHP 배열에 특수 문자가 포함되어 있는 경우 PHP에서 rawurlencode()를 사용한 후 디코딩을 사용해야 합니다.JS 내의 URIComponent()를 사용하여 이러한 항목을 이스케이프합니다.JSON을 네이티브 js로 해석합니다.이것을 시험해 보세요.

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

console.log(data);

가짜 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>

저도 같은 문제가 있었는데 이렇게 했어요.

/*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. 
        }
   });
});

도움이 됐으면 좋겠어요.

심플화:

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

만약 당신이 html 페이지 소스 코드에 직접 인쇄하는 다차원 PHP 배열을 원하는 경우, 그리고 들여쓰기된 인간이 만든 Javascript Object Notation (일명 JSON) 방식으로, "bohwaz"라는 별명을 가진 누군가가 코드화한 http://php.net/manual/en/function.json-encode.php#102091에서 찾은 이 멋진 함수를 사용하세요.

<?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;
}

?>       

다음은 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);

그것은 마법처럼 작용한다.

여기에는 많은 우수하고 복잡한 솔루션이 있으며 이는 사용자 측에서 json을 구문 분석하지 않고 수행할 수 있는 방법입니다.

$mtc=array();
$replace=array();

$x = json_encode($thearray);

preg_match_all('/"[a-z0-9_]*":/',$x,$mtc);

foreach($mtc[0] as $v){
    array_push($replace,str_replace('"','',$v));
}
    
$x = str_replace($mtc[0],$replace,$x);

echo '<script type="text/javascript">x='.$x.';console.log(x);</script>';

이것은, 복수의 레벨을 가지는 인덱스 어레이와 어소시에이션 어레이(임의의 조합)의 양쪽 모두에서 동작해, 유저측의 json의 해석은 불필요합니다.

Larabel의 경우, Blade 문은 XSS 공격을 방지하기 위해 PHP의 htmlspecialchars 함수를 통해 자동으로 전송됩니다.데이터를 이스케이프 해제하려면 다음 구문을 사용할 수 있습니다.

const jsArray = {!! str_replace('&quot;', '', json_encode($array)) !!};

Larabel 사용자: @json 사용

var cities = @json($data);

공식 문서에서 설명한 바와 같이 https://laravel.com/docs/8.x/blade#rendering-json:

언급URL : https://stackoverflow.com/questions/5618925/convert-php-array-to-javascript

반응형