end()期望参数1是数组 - php

时间:2017-01-17 10:15:01

标签: php mysql arrays

我正在从MySQL数据库中检索电子邮件列表,旁边是用户的ID,它是这样的

Array ( 
[0] => Array ( [ID] => 1 [Email] => email1 ) 
[1] => Array ( [ID] => 2 [Email] => email2 ) 
)

并且在尝试测试上次使用的电子邮件“email2”的值时使用了

end(end($array_sample));

这曾经在运行PHP 5.0的旧服务器上运行,并在运行PHP 5.6的新服务器上停止

我做错了什么或是php版本? 我基本上改变了整个方法,让网站做任何如何做的事情,但我仍然想了解end(end(array))问题。

3 个答案:

答案 0 :(得分:5)

"%windir%\System32\wevtutil.exe" im "%~dp0Manifest.man" /rf:"%~dp0Manifest.dll" /mf:"%~dp0Manifest.dll" 函数需要通过引用获取数组,因此它不能是其他函数的结果,因为您会收到以下错误:

  

只应通过引用传递变量

为避免将内部end()的结果分配给变量,然后对此变量使用end()

end()

由于$tmp = end($array); $result = end($tmp); 设置为安静它们,您可能不会在以前版本的PHP中收到任何错误。

根据documentation

  

在PHP 5.4.0之前 E_STRICT 未包含在 E_ALL 中,所以你   必须在PHP中明确启用这种错误级别<   5.4.0。

答案 1 :(得分:4)

据我所知,您的代码should had never worked

  

只应通过引用传递变量

正如documentation所解释的那样:

  

这个数组是通过引用传递的,因为它被修改了   功能。这意味着你必须传递一个真正的变量,而不是一个   函数返回一个数组,因为只有实际的变量   通过引用传递。

更改的内容是错误的严重性。这是一个致命的错误,严格的标准通知和定期通知。 4.3.0和5.0.4之间只是默默地失败。

在升级并触发实际错误消息之前,很可能不会注意到错误。

答案 2 :(得分:1)

你在另一端有一个结束,内部的一个返回数组的最后一个元素,外面的一个期望数组不是单个值