我试图从SQL数据库中获取类似时间戳的东西(它没有时间戳,只是文本,这是因为它可能超过24小时)无论如何;我从SQL数据库中获取这些数据,并且我想将所有这些查询统计在一起,因此我使用一个爆炸函数将这些数据拆分为数组中的三个部分(小时,分钟,秒)。
现在的问题是:当我运行这个函数时,它需要全部在一个数组中,我现在得到的是数组只能包含最后一个元素。我认为这是一个非常简单的问题,但我一直在寻找能找到它的时间(我想我只是因为我是PHP语言的新手)。提前谢谢!
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT tijd FROM gespeeldeTijd"; // get data with sql query
$result = $conn->query($sql);
if ($result->num_rows > 0) { // do a while loop to fetch all data to an array
// output data of each row
while($row = $result->fetch_assoc()) {
$myArray[] = $row["tijd"];
}
} else { // if there are no results
echo "0 results";
}
$array_product = [];
function myfunction($value) //function to do to evry part of the array
{
$array_product[] = explode(":",$value); // split the time in hours,
minutes, seconds
return $array_product;
}
array_walk($myArray,"myfunction"); // walk trough evry part of the array
print_r($array_product);
$conn->close();
答案 0 :(得分:0)
$array_product
超出了myfunction的范围。现在,您在函数内部创建一个新数组,该函数在函数结束时立即被丢弃。如果要引用主array_product变量,则必须使用global
导入它。 <{1}}语句不需要return
语句,它无处可去。
function myfunction($value) //function to do to every part of the array
{
global $array_product; //import the variable from the global scope
$array_product[] = explode(":",$value); // split the time in hours, minutes, seconds
}
有关正常工作的演示,请参阅https://eval.in/989726。
P.S。也许有人可以提出一种更好的方法来完成这项任务,而不使用全局变量(它不是一个非常干净的解决方案),但这是对当前代码的快速修复。
答案 1 :(得分:-1)
我建议您可以尝试一下,这可能会对您有所帮助:
function getSomething() {
return array(4,5,6);
}
list($x,$y,$z) = getSomething();