Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么serialize()在php mysql中的性能很差_Php_Mysql_Arrays - Fatal编程技术网

为什么serialize()在php mysql中的性能很差

为什么serialize()在php mysql中的性能很差,php,mysql,arrays,Php,Mysql,Arrays,我尝试在mysql中存储多个数组。serialize()和unserialize()工作正常,但页面的加载时间显著增加。。。就像很长很糟糕,即使是20-50个对象的小数组 有没有办法避免这种情况 我的问题是我有一个很长的函数代码,但不记得代码后面的数组: 例如 function { // There is very long code here with foreach, loop and all that crap. // Working and displaying arra

我尝试在mysql中存储多个数组。serialize()和unserialize()工作正常,但页面的加载时间显著增加。。。就像很长很糟糕,即使是20-50个对象的小数组

有没有办法避免这种情况

我的问题是我有一个很长的函数代码,但不记得代码后面的数组:

例如

  function {

  // There is very long code here with foreach, loop and all that crap.

  // Working and displaying array

  $finalarray = ($array["stuff"]);
  print_r($finalarray);


  }

  // Here after function the variable is forgotten and print_r($finalarray) dont work anymore
为什么变量在函数之后是未设置的,因为这就是为什么我首先要将它存储在mysql中,也许我可以通过记住数组来避免这种情况

我没有把所有的代码,因为它是巨大的,但如果你需要更多关于我的问题的信息,请告诉我


谢谢

您所问的是“可变可视范围”。 在PHP中,如果在函数中定义变量,则函数结束后该变量将不可见

要使您创建的变量在函数执行后可供外部代码访问,必须将其声明为全局变量,如下所示:

function f() 
{
    global $finalarray;
    ...
    $finalarray = ......;
}

f();
print_r($finalarray);
另一种方法是使函数
返回数组。像这样:

function f() 
{
    $finalarray = ......;  // local variable
    return $finalarray;    // return by value
}

$finalarray = f();     // becomes a global variable
print_r($finalarray);

您所问的是“可变可见性范围”。 在PHP中,如果在函数中定义变量,则函数结束后该变量将不可见

要使您创建的变量在函数执行后可供外部代码访问,必须将其声明为全局变量,如下所示:

function f() 
{
    global $finalarray;
    ...
    $finalarray = ......;
}

f();
print_r($finalarray);
另一种方法是使函数
返回数组。像这样:

function f() 
{
    $finalarray = ......;  // local variable
    return $finalarray;    // return by value
}

$finalarray = f();     // becomes a global variable
print_r($finalarray);

$finalarray
是在赋值之前定义的吗?谢谢你的回复,我真的不知道$finalarray在函数中输出了一个非常好的数组,但是在函数之外它被遗忘了。我需要在我的页面顶部的功能,不能重复它两次,因为错误。我真的需要找到一种方法1-将其存储在mysql中或2-记住变量中的数组以备以后在html中使用。我尝试使用serialize将其存储在mysql中,但性能很差我想在mysql表中创建200个colonum并逐个添加它们,但这是个糟糕的主意,因为有时数组中有1000个对象:)因为我在同一页中使用了相同的变量,将其存储在mysqlis中可能完全没有用在赋值之前定义的
$finalarray
?感谢您的回复,我真的不知道$finalarray在函数中输出了非常好的数组,但在函数之外它被遗忘了。我需要在我的页面顶部的功能,不能重复它两次,因为错误。我真的需要找到一种方法1-将其存储在mysql中或2-记住变量中的数组以备以后在html中使用。我尝试使用serialize将其存储在mysql中,但性能很差我想在mysql表中创建200个colonum并逐个添加它们,但这是个糟糕的主意,因为有时数组中有1000个对象:)因为我在同一个页面中使用同一个变量,将它存储在mysql中可能完全没有用