问题描述
我不熟悉 PHP 和编码。 目前我正在尝试制作一个简单的计算器。 为此,我有两个脚本calculator.PHP 和array.PHP 我的想法是将用户提供的所有输入存储在一个数组中,以便我可以使用 eval() 函数计算它们。因为我需要一个字符串,所以我使用 foreach 循环转换了数组。 但是当我尝试在 foreach 循环之外使用变量时,我收到以下错误:
注意:第17行数组到字符串的转换 大批 解析错误:语法错误,意外的 ';',在 /Applications/XAMPP/xamppfiles/htdocs/dashboard/array.PHP(22) 中期待 '(' : eval()'d 代码在第 1 行
我该怎么做才能解决这个问题?
array.PHP
library(tidyr)
crossing(ID,Var2 = factor(Var2,levels = Var2))
# ID Var2
# <chr> <chr>
# 1 A T_X
# 2 A X_F
# 3 A R_X
# 4 A T_Y
# 5 A Y_F
# 6 A R_Y
# 7 B T_X
# 8 B X_F
# 9 B R_X
# 10 B T_Y
# 11 B Y_F
# 12 B R_Y
解决方法
您反复将整个 $_SESSION
变量与 $_SESSION['persistentValues']
混淆。后者是您在提交按钮时按住按钮的位置。
$value
的值是一个数组,因为您要循环遍历 $_SESSION
来设置它,而会话变量的值是一个数组。 eval()
的参数是一个字符串,当您将数组转换为字符串时,它变成了字符串 Array
,它不是一个可以计算的表达式。
您可以使用 implode()
将数组的所有元素连接成一个字符串。因此,如果会话数组包含 ['9','3','+','8']
,它会将 $value
设置为 '93+8'
,然后您可以将其传递给 eval()
。
eval()
的参数需要是一个语句。所以你应该把 echo
命令放在参数中。
<?php
session_start();
if (!is_array($_SESSION['persistentValues'])) {
$_SESSION['persistentValues'] = array();
}
if (isset($_POST['button'])) {
$_SESSION['persistentValues'][] = $_POST['button'];
}
$value = implode('',$_SESSION['persistentValues']);
echo $value;
if (isset($_POST["result"])) {
eval("echo $value;");
}
?>