php 8.3 不调用 html,而是由 web 服务器执行 .php 文件并生成输出;可通过内联 json、api 接口、隐藏字段或表单提交四种方式在服务端将数组数据安全传递给前端 html/js 使用。

1. 直接内联输出为 JSON(推荐用于简单场景)
在 `.php` 文件中定义数组,用 json_encode() 转成 JSON 字符串,嵌入 `<script>` 标签中:</script>
示例(index.php):
<?php $data = ['苹果', '香蕉', '橙子']; ?><script> const fruits = <?php echo json_encode($data, JSON_UNESCAPED_UNICODE); ?>; console.log(fruits); // ["苹果", "香蕉", "橙子"] </script>
注意点:
- 必须加
JSON_UNESCAPED_UNICODE,否则中文会变成 \uXXXX - 不要手动拼接字符串或用
echo输出未转义的数组,易引发 JS 语法错误或 XSS - 适用于数据量小、无需后续更新的静态列表
2. 通过独立 API 接口返回 JSON(推荐用于动态/交互场景)
新建一个纯数据接口文件(如 api/fruits.php),只负责输出 JSON:
<?php header('Content-Type: application/json; charset=utf-8');
$data = ['苹果', '香蕉', '橙子'];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
?>
在 HTML 页面中用 JavaScript 请求它:
<script>
fetch('api/fruits.php')
.then(res => res.json())
.then(fruits => {
fruits.forEach(f => console.log(f));
});
</script>
优势:
- 前后端职责分离,利于维护和复用
- 支持异步加载、错误重试、缓存控制
- 天然兼容 AJAX、Vue/React 等框架
3. 使用隐藏 input 或 data 属性(适合轻量、非敏感结构化数据)
将数组转为 JSON 字符串,写进 HTML 元素属性中,再由 JS 解析:
<input type="hidden" id="fruits-data" value="<?php echo htmlspecialchars(json_encode($data, JSON_UNESCAPED_UNICODE), ENT_QUOTES, 'UTF-8'); ?>">
JS 中读取:
const el = document.getElementById('fruits-data');
const fruits = JSON.parse(el.value);
关键细节:
- 必须用
htmlspecialchars(..., ENT_QUOTES)防止引号截断或 XSS - 仅建议用于小型数组(如配置项、选项列表),避免过大影响 HTML 体积
4. 表单提交时传递数组(用户主动触发,非“PHP 调用 HTML”)
若需从 HTML 表单向 PHP 提交数组(比如多选 checkbox),HTML 写法要带 []:
PHP 8.3 中直接接收:
<?php if ($_POST['fruits'] ?? null) {
$selected = $_POST['fruits']; // 自动是数组,如 ['apple', 'banana']
}
?>
这是“HTML 向 PHP 传数组”,方向相反,但常被混淆——需根据真实需求判断流向。
不复杂但容易忽略:PHP 和 HTML 不是双向调用关系,而是服务端渲染或接口响应关系。选哪种方式,取决于数据是否需要动态更新、是否涉及用户交互、以及项目架构风格。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











