wake-up-neo.net

Konvertieren Sie ein PHP-Array in Javascript

Wie kann ich ein PHP -Array in ein solches Format konvertieren?

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
)

zu einem Javascript-Array im untenstehenden Format?

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

Spudleys Antwort ist in Ordnung .

Sicherheitshinweis: Folgendes sollte für Sie nicht mehr erforderlich sein

Wenn Sie nicht über PHP 5.2 verfügen, können Sie Folgendes verwenden:

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

Ich gehe davon aus, dass die beiden Arrays, die Sie für PHP und JS angegeben haben, nicht miteinander verwandt sind. Sie sind nur Beispiele dafür, wie Arrays in den beiden Sprachen aussehen. Natürlich können Sie diese Buchstaben- und Zahlenfolge nicht in diese Städtenamen umwandeln.

PHP bietet eine Funktion zum Konvertieren von PHP Arrays in den Javascript-Code: json_encode() . (technisch gesehen ist es das JSON-Format; JSON steht für JavaScript Object Notation)

Verwenden Sie es so:

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

Weitere Informationen finden Sie auch in der oben verlinkten Handbuchseite.

Beachten Sie, dass json_encode() nur in PHP 5.2 und höher verfügbar ist. Wenn Sie also eine ältere Version verwenden, müssen Sie eine vorhandene Version - die Handbuchseite PHP verwenden enthält Kommentare zu Funktionen, die von Personen geschrieben wurden, die dies brauchten. (Das heißt aber, wenn Sie etwas älteres als PHP 5.2 verwenden, sollten Sie ASAP aktualisieren.)

386
Spudley

Dumm und einfach:

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

Sie müssen parseJSON nicht aufrufen, da Ausgabe von json_encode ein Javascript-Literal ist. Weisen Sie es einfach einer js-Variablen zu.

<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>
26
Jaykishan

sie können PHP-Arrays mit der PHP-Funktion json_encode in Javascript konvertieren 

<?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>
21
Dipesh Kc

Die schnellste und einfachste Methode, mit einem PHP - Array in Javascript zu arbeiten, ist Folgendes:

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

so einfach ...!

verwenden Sie diese Methode:

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

in Laravel-Klinge {{}} Verwenden Sie diese Methode:

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

arbeiten für zugeordnete und nicht zugeordnete Arrays.

sie können auch auf diese Weise tun 

<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>
5
cool Quazi

Für ein multidimensional array in PHP4 können Sie den folgenden Zusatz zu dem von Udo G veröffentlichten Code verwenden:

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

Das ist meine Funktion. JavaScript muss unter PHP sein, ansonsten verwenden Sie 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>

Letzte Zeile kann sein .... Text (jsArray); und wird "1,2,3,4,5,6" angezeigt

3
japetko

Ich verwende ein fake php-Array

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

wenn jemals Ihr Array unbekannt ist (bereits gemacht)

<?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>
2
Mik

Dies kann auf eine sicherere Weise erfolgen.

Wenn Ihr Array PHP Sonderzeichen enthält, müssen Sie rawurlencode () in PHP verwenden und dann decodeURIComponent () in JS verwenden, um diese zu umgehen. Und parsen Sie die JSON in native Js. Versuche dies:

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

console.log(data);
2
Ben Rogmans

Ich hatte das gleiche Problem und so habe ich es gemacht. 

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

Ich hoffe, es hilft. 

1
Conceptree

Halte es einfach :

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

Wenn Sie ein mehrdimensionales PHP - Array benötigen, das direkt in den HTML-Quellcode der HTML-Seite gedruckt werden soll, und in einer eingerückten, vom Menschen lesbaren Javascript-Objektnotation (auch als JSON bezeichnet), verwenden Sie diese Nice-Funktion, die ich in http://php.net/manual/de/function.json-encode.php#102091 von jemandem mit dem Spitznamen "bohwaz" codiert.

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

?>       
0
Heitor

Im Folgenden finden Sie einen recht einfachen Trick, um ein PHP -Array in ein JavaScript-Array zu konvertieren:

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

JS unten:

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

Es wirkt wie ein Zauber.

0
prashant parmar