从PHP接收可变变量输入到C++
我有一个程序需要发送以下变量: 布尔整型字符串向量 这将来自一个PHP调用,正如我所研究的和 看看int argc,char**argv[],我知道您可以将各种参数传递给运行程序所需的程序,但这些参数都是一个参数 我的问题是:如果可能的话,你如何在PHP调用中跨多个不同的变量发送到C++程序? 编辑问题继续…函数调用是什么样子的 它是否简单到不使用int argc、char**argv[]并只执行以下操作:从PHP接收可变变量输入到C++,php,c++,variables,call,Php,C++,Variables,Call,我有一个程序需要发送以下变量: 布尔整型字符串向量 这将来自一个PHP调用,正如我所研究的和 看看int argc,char**argv[],我知道您可以将各种参数传递给运行程序所需的程序,但这些参数都是一个参数 我的问题是:如果可能的话,你如何在PHP调用中跨多个不同的变量发送到C++程序? 编辑问题继续…函数调用是什么样子的 它是否简单到不使用int argc、char**argv[]并只执行以下操作: int main(bool var1, int var2, std::vector<
int main(bool var1, int var2, std::vector<std::string> var3, std::string var4)
{
...
}
因为这似乎使int ARC,char **avg[]有多余的冗余性。
您可以使用Exc:在PHP中执行C++程序。将把$$内容作为命令行参数传递给C++程序。在mainit argc、char**argv中,您可以通过argc和argv访问此数据
为了一次传递多个变量,您应该使用某种类型的。这将把变量的内容转换成一个字符串,然后作为命令行参数再次传递。 您只需确保C++端知道如何将该字符串序列化为正确的变量/数据类型。 有很多种可能性,从发明你自己的格式到使用一种已建立的格式来实现 我想到了JSON、XML等格式。您甚至可以使用方法实现某些东西 为了让事情更清楚,我们假设您希望将这些数据从PHP传递到C++:$var1 = false;
$var2 = 123;
$var3 = array("some","string","data");
$var4 = "anotherstring";
让我们进一步假设您有一个PHP函数my|u serialize,它将数组$var1、$var2、$var3、$var4转换为虚构的序列化格式false | 123 | |另一个字符串:
使用上面列出的一种序列化方法,您不必关心MySySerialMyExalItalI化和MyOracRealItI化的实现细节。
可以使PHP作为一个新进程执行C++程序,请参见。如果要传递复杂的参数,可能需要以某种方式序列化参数。更复杂的方法是编译C++程序作为一个库,并使用类似的东西加载它,虽然我只是猜测,因为我没有经验。ExEC确实看了要走的路,但是使用Excel传递命令,序列化或不,我会设置函数INTARC,CHAR**ARGV[]或BoO-VAR1,INTARV2,STD::向量VAR3,std::string var4?您必须始终使用int argc,char**argv[]我在下面的回答中已经说过:您必须将数据序列化为字符序列。您不能这样分配它。我更新了我的答案$var1 = false;
$var2 = 123;
$var3 = array("some","string","data");
$var4 = "anotherstring";
$serialized_data = my_serialize(array($var1, $var2, $var3, $var4));
// $serialized_data == "false|123|<some,string,data>|anotherstring"
// invoke your program and pass the data
exec("./your_program.exe '$serialized_data'", $output);
int main(int argc, char** argv)
{
std::cout << argv[1] << std::endl;
MyData data = my_deserialize(argv[1]);
std::cout << data.var4 << std::endl; // outputs "another string"
}