微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP变量未定义为eval函数

如何解决PHP变量未定义为eval函数

我不熟悉 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))

calculator.PHP

#   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;");
}
?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。