将一个功能的多个列表存储在一起

时间:2018-04-17 15:02:35

标签: php sql

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

2 个答案:

答案 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();