Php 将一个函数中的多个列表存储在一起

Php 将一个函数中的多个列表存储在一起,php,sql,Php,Sql,我试图从SQL数据库中获取类似时间戳的东西(它不是时间戳,只是文本,因为它可能超过24小时);我从SQL数据库中获取这些数据,并希望将所有这些查询一起计算,因此我使用分解函数将它们拆分为数组中的三个部分(小时、分钟、秒) 现在的问题是:当我运行这个函数时,它需要全部放在一个数组中,我现在得到的是数组只能包含最后一个元素。我认为这是一个非常简单的问题,但我已经搜索了几个小时,却找不到它(我认为这只是因为我对PHP语言还不熟悉)。提前谢谢 $servername = "localhost"; $us

我试图从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();

我建议您尝试一下,这可能会对您有所帮助:

function getSomething() {
return array(4,5,6);
}

list($x,$y,$z) = getSomething();

$array\u产品
超出myfunction的范围。现在,在函数内部创建一个新数组,当函数结束时,该数组将立即被丢弃。如果要引用主数组\u产品变量,则必须使用
global
导入它。而且不需要使用
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

}
请参阅,以获取可用的演示


另外,也许有人可以想出一个更好的方法来完成这项任务,而不使用globals(这不是一个非常干净的解决方案),但这是您当前代码的快速修复方法。

您好,谢谢您的快速回答!现在我得到了类似这样的“数组([0]=>数组([0]=>01[1]=>00[2]=>00)[1]=>数组([0]=>04[1]=>00[2]=>00)[2]=>数组([0]=>02[1]=>00[2]=>00])是否有一种方法可以将其包含在一个数组中?从技术上讲,这是一个数组。它恰好包含几个数组(多个explode语句的结果)。这个列表是一个结构,这意味着你可以很容易地区分哪些时间片段属于彼此。你还希望得到什么样的结果?为什么?这个输出看起来很符合逻辑。它开始看起来有点像数组中的一个数组,ad是数组中的一个数组,等等。我想如果它看起来像这样,用它做数学就简单多了。像这样(数组([0]=>数组([0]=>01[1]=>00[2]=>00[3]=>04[4]=>00[5]=>00)你想做什么样的数学?我真的认为我的方法更简单,因为你很容易知道子数组中的哪个元素是小时(总是元素0),哪个是分(1),哪个是秒(2)然而,在你的结构中,你必须有更多的代码来找到每三个元素才能知道这一点。或者,根据精确的要求,最好将原始值解析为日期时间,并使用该类来帮助计算,我不知道,这完全取决于你的想法。是的,这是完全正确的,我编程了一点我认为你的代码是绝对正确的,犯错误的机会要小得多