将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 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), ';';
我将假定你为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更早的东西,你应该尽快升级)
愚蠢和简单:
var js_array = [<?php echo '"'.implode('","', $php_array).'"' ?>];
你不必调用parseJSON,因为json_encode
的输出是一个JavaScript文字。 只需将其分配给一个jsvariables。
<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的json_encode
函数将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);?>');
你也可以这样做
<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>
这是我的function。 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中的decodeURIComponent()来转义这些字符。 并将JSONparsing为本地js。 尝试这个:
var data = JSON.parse( decodeURIComponent( "<?=rawurlencode(json_encode($data));?>" ) ); console.log(data);
我有同样的问题,这是我如何做到这一点。
/*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. } }); });
我希望它有帮助。
我使用一个假的 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数组直接打印到HTML页面源代码中,并且使用缩略的人类可读的Javascript对象表示法(又名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; } ?>
很简单 …!
使用这种方法:
<?php echo json_encode($your_array); ?>;
在laravel blade {{}}中使用这个方法:
{{ str_replace('"', '', json_encode($your_array)) }}
为关联和非关联数组工作。
以下是将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);
它像一个魅力。