variable valor pasar obtener llamar embebido desde dentro con como combinar php javascript arrays

valor - Convierta la matriz php a Javascript



valor de html a php (15)

¿Cómo puedo convertir una matriz PHP en un formato como este?

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 )

a una matriz de Javascript en el siguiente formato?

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


A continuación se muestra un truco bastante simple para convertir una matriz de PHP a una matriz de JavaScript:

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

JS a continuación:

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

Funciona a las mil maravillas.


Esta es mi función. JavaScript debe estar bajo PHP; de lo contrario, use 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>

La última fila puede ser ... texto (jsArray); y se mostrará "1,2,3,4,5,6"


La forma más rápida y sencilla de trabajar con una matriz PHP en Javascript es hacer esto:

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


No tiene que llamar a parseJSON ya que el resultado de json_encode() es un literal de JavaScript. Simplemente asignes a una variable 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>


Para una matriz multidimensional en PHP4, puede usar la siguiente adición al código publicado por 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());


Se puede hacer de una manera más segura.

Si su matriz PHP contiene caracteres especiales, debe usar rawurlencode () en PHP y luego usar decodeURIComponent () en JS para escapar de ellos. Y analizar el JSON a js nativo. Prueba esto:

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


Si necesita una matriz de PHP multidimensional para imprimir directamente en el código fuente de la página html, y en una forma de Notación de objetos Javascript (también conocida como JSON) legible para humanos, use esta bonita función que encontré en http://php.net/manual/en/function.json-encode.php#102091 codificado por alguien apodado "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; } ?>


Tonto y simple:

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


Tuve el mismo problema y así es como lo hice.

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

Espero que ayude.


Voy a suponer que las dos matrices que has dado para PHP y JS no están relacionadas, y son solo ejemplos de cómo se ven las matrices en los dos idiomas. Claramente, no podrá convertir esas secuencias de letras y números en esos nombres de ciudades.

PHP proporciona una función para convertir matrices PHP en código JavaScript: json_encode() . (técnicamente, es formato JSON; JSON significa Notación de objetos JavaScript)

Úselo así:

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

Consulte también la página del manual que he vinculado anteriormente para obtener más información.

Tenga en cuenta que json_encode() solo está disponible en PHP 5.2 y superior, por lo que si está utilizando una versión anterior, necesitará usar pear.php.net/package/Services_JSON : la página de manual de PHP también incluye comentarios con funciones escritas por personas que lo necesitaban . (pero dicho esto, si está utilizando algo más antiguo que PHP 5.2 debe actualizar lo antes posible)


Yo uso una matriz php falsa

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

si alguna vez su matriz es desconocida (ya hecha)

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


puedes convertir arrays php en javascript usando la función json_encode() de php

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


también puedes hacer de esta manera

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


tan sencillo ...!

usa este método:

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

en laravel blade {{}} usa este método:

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

trabajando para array asociado y no asociado.


La respuesta de Spudley está bien .

Aviso de seguridad: Lo siguiente no debería ser necesario por más tiempo

Si no tiene PHP 5.2 puede usar algo como esto:

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