Converteer php-array naar Javascript

Hoe kan ik een PHP-array in een formaat als dit converteren

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
)

naar een Javascript-array in de onderstaande indeling?

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

Antwoord 1, autoriteit 100%

Spudley’s antwoord is prima.

Beveiligingskennisgeving:Het volgende zou voor u niet langer nodig moeten zijn

Als je geen PHP 5.2 hebt, kun je zoiets als dit gebruiken:

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

Antwoord 2, autoriteit 99%

Ik ga ervan uit dat de twee arrays die je hebt gegeven voor PHP en JS niets met elkaar te maken hebben, en dat het slechts voorbeelden zijn van hoe arrays eruitzien in de twee talen. Het is duidelijk dat je die reeksen letters en cijfers niet kunt omzetten in die stadsnamen.

PHP biedt een functie om PHP-arrays om te zetten in Javascript-code: json_encode(). (technisch gezien is het JSON-formaat; JSON staat voor JavaScript Object Notation)

Gebruik het als volgt:

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

Zie ook de handleiding die ik hierboven heb gelinkt voor meer informatie.

Houd er rekening mee dat json_encode()alleen beschikbaar is in PHP 5.2 en hoger, dus als je een oudere versie gebruikt, moet je een bestaande— de PHP-handleiding bevat ook opmerkingen met functies die zijn geschreven door mensen die het nodig hadden. (maar dat gezegd hebbende, als je iets ouder dan PHP 5.2 gebruikt, moet je zo snel mogelijk upgraden)


Antwoord 3, autoriteit 63%

Dom en simpel :

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

Antwoord 4, autoriteit 58%

Je hoeft parseJSON niet aan te roepen sinds de output van json_encodeis een letterlijke javascript.Wijs het gewoon toe aan een js-variabele.

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

Antwoord 5, autoriteit 35%

u kunt php-arrays converteren naar javascript met behulp van php’s json_encodefunctie

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

Antwoord 6, autoriteit 29%

De snelste en gemakkelijkste manier om met een PHP-array in Javascript te werken, is volgens mij om dit te doen:

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

Antwoord 7, autoriteit 20%

zo simpel…!

gebruik deze methode:

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

in laravel blade {{ }}gebruik deze methode:

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

werkt voor gekoppelde en niet-geassocieerde array.


Antwoord 8, autoriteit 14%

Is heel eenvoudig, ik gebruik deze manier:

JAVASCRIPT:

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

Converteer PHP-array naar Javascript

Met vriendelijke groet!


Antwoord 9, autoriteit 12%

u kunt ook op deze manier doen

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

Antwoord 10, autoriteit 6%

Voor een multidimensionalearray in PHP4 kun je de volgende toevoeging aan de door Udo G geposte code gebruiken:

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

Antwoord 11, autoriteit 6%

Dit is mijn functie. JavaScript moet onder PHP staan, anders SESSION gebruiken.

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

Laatste rij kan ….text(jsArray) zijn; en wordt getoond “1,2,3,4,5,6”


Antwoord 12, autoriteit 6%

Ik gebruik een nepphp-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>

als uw array ooit onbekend is (reeds gemaakt)

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

Antwoord 13, Autoriteit 5%

het kan op een veiligere manier worden gedaan.

Als uw PHP-array speciale tekens bevat, moet u Rawurlencode () in PHP gebruiken en vervolgens decodeeuricomponent () in JS gebruiken om aan die te ontsnappen. En ontleed de JSON aan inheemse JS. Probeer dit:

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

Antwoord 14, Autoriteit 2%

Ik had hetzelfde probleem en dit is hoe ik het heb gedaan.

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

Ik hoop dat het helpt.


Antwoord 15, autoriteit 2%

Houd het simpel:

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

Antwoord 16

Als je een multidimensionale PHP-array nodig hebt om rechtstreeks in de broncode van de html-pagina te worden afgedrukt, en op een ingesprongen, voor mensen leesbare Javascript Object Notation (ook bekend als JSON), gebruik dan deze leuke functie die ik vond in http://php.net/manual/en/function.json-encode.php#102091gecodeerd door iemand met de bijnaam “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;
}
?>       

Antwoord 17

Hieronder is een vrij eenvoudige truc om PHP-array naar JavaScript-array te converteren:

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

JS hieronder:

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

Het werkt als een tierelier.


Antwoord 18

Er zijn veel goede en complexe oplossingen en dit is een manier om dit te doen zonder json aan de gebruikerskant te ontleden.

$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>';

Dit werkt met zowel geïndexeerde als associatieve arrays (elke combinatie) die meerdere niveaus heeft, en json-parsing aan de gebruikerszijde is niet nodig.


Antwoord 19

Voor Laravelworden Blade {{ }}-statements automatisch verzonden via PHP’s htmlspecialchars-functie om XSS-aanvallen te voorkomen. Om uw gegevens unscapedte laten zijn, kunt u de volgende syntaxis gebruiken:

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

Other episodes