Php 将一个函数中的多个列表存储在一起
我试图从SQL数据库中获取类似时间戳的东西(它不是时间戳,只是文本,因为它可能超过24小时);我从SQL数据库中获取这些数据,并希望将所有这些查询一起计算,因此我使用分解函数将它们拆分为数组中的三个部分(小时、分钟、秒) 现在的问题是:当我运行这个函数时,它需要全部放在一个数组中,我现在得到的是数组只能包含最后一个元素。我认为这是一个非常简单的问题,但我已经搜索了几个小时,却找不到它(我认为这只是因为我对PHP语言还不熟悉)。提前谢谢Php 将一个函数中的多个列表存储在一起,php,sql,Php,Sql,我试图从SQL数据库中获取类似时间戳的东西(它不是时间戳,只是文本,因为它可能超过24小时);我从SQL数据库中获取这些数据,并希望将所有这些查询一起计算,因此我使用分解函数将它们拆分为数组中的三个部分(小时、分钟、秒) 现在的问题是:当我运行这个函数时,它需要全部放在一个数组中,我现在得到的是数组只能包含最后一个元素。我认为这是一个非常简单的问题,但我已经搜索了几个小时,却找不到它(我认为这只是因为我对PHP语言还不熟悉)。提前谢谢 $servername = "localhost"; $us
$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)然而,在你的结构中,你必须有更多的代码来找到每三个元素才能知道这一点。或者,根据精确的要求,最好将原始值解析为日期时间,并使用该类来帮助计算,我不知道,这完全取决于你的想法。是的,这是完全正确的,我编程了一点我认为你的代码是绝对正确的,犯错误的机会要小得多