Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
搜索多维数组并将找到的值放入新数组(PHP)_Php_Arrays_Search_Multidimensional Array - Fatal编程技术网

搜索多维数组并将找到的值放入新数组(PHP)

搜索多维数组并将找到的值放入新数组(PHP),php,arrays,search,multidimensional-array,Php,Arrays,Search,Multidimensional Array,我试图让这个工作的基础上,在这个问题上找到答案:-但我没有运气 我正在查询数据库。我需要获取结果,并将所有“type”=$type的结果放入一个新数组,以使用该新数组显示信息 搜索功能: function search($array, $key, $value){ $results = array(); search_r($array, $key, $value, $results); return $results; } function search_r($array

我试图让这个工作的基础上,在这个问题上找到答案:-但我没有运气

我正在查询数据库。我需要获取结果,并将所有“type”=$type的结果放入一个新数组,以使用该新数组显示信息

搜索功能:

function search($array, $key, $value){
    $results = array();
    search_r($array, $key, $value, $results);
    return $results;
}
function search_r($array, $key, $value, &$results){
    if (!is_array($array)) {
        return;
    }
    if (isset($array[$key]) && $array[$key] == $value) {
        $results[] = $array;
    }
    foreach ($array as $subarray) {
        search_r($subarray, $key, $value, $results);
    }
}  
$getTypes = mysqli_query($link, "SELECT * FROM Type WHERE section = ".$selectValue." ORDER BY `order`");
$getCategories = mysqli_query($link, "SELECT * FROM Category WHERE section = ".$selectValue." ORDER BY `order`");
$getdbvalues = mysqli_query($link, "SELECT * FROM `Data` WHERE section = ".$selectValue." AND `date` = ".$datecomp);
$dbvalues = mysqli_fetch_assoc($getdbvalues);
while($type = mysqli_fetch_assoc($getTypes)){
    $typeid = $type['id'];
    $getdbdata = search($dbvalues, 'type', $typeid);
    while($category1 = mysqli_fetch_assoc($getCategories)){
        // DISPLAY DATA FROM $getdbdata
    }
}
代码:

function search($array, $key, $value){
    $results = array();
    search_r($array, $key, $value, $results);
    return $results;
}
function search_r($array, $key, $value, &$results){
    if (!is_array($array)) {
        return;
    }
    if (isset($array[$key]) && $array[$key] == $value) {
        $results[] = $array;
    }
    foreach ($array as $subarray) {
        search_r($subarray, $key, $value, $results);
    }
}  
$getTypes = mysqli_query($link, "SELECT * FROM Type WHERE section = ".$selectValue." ORDER BY `order`");
$getCategories = mysqli_query($link, "SELECT * FROM Category WHERE section = ".$selectValue." ORDER BY `order`");
$getdbvalues = mysqli_query($link, "SELECT * FROM `Data` WHERE section = ".$selectValue." AND `date` = ".$datecomp);
$dbvalues = mysqli_fetch_assoc($getdbvalues);
while($type = mysqli_fetch_assoc($getTypes)){
    $typeid = $type['id'];
    $getdbdata = search($dbvalues, 'type', $typeid);
    while($category1 = mysqli_fetch_assoc($getCategories)){
        // DISPLAY DATA FROM $getdbdata
    }
}

您应该在MySQL中这样做

SELECT * FROM `Data`
LEFT JOIN `Type` ON `Type`.id = `Data`.type
LEFT JOIN `Category` ON `Category`.id = `Data`.category
WHERE `Data`.section = '$selectValue'

我在猜桌子的结构。此外,如果需要检查每个表上的selectValue,则需要将它们添加到查询的WHERE部分。

在哪里使用搜索函数返回的数组
$subarray
?抱歉,函数错误。更新。我觉得这是可以/应该通过
连接来完成的。在这种情况下,是否有一些连接的示例或解释?我们需要查看表的结构。连接这些东西会做什么?显示时如何使用此信息(例如,当我需要显示具有特定类型的项目时)。这与我正在做的有什么不同?这是一个查询,而不是你的三个查询。您可以添加到它的WHERE部分来限制结果。如果您想开始在多个表中对结果进行排序,它也非常有用。是的,但我需要搜索特定类型的结果并相应显示。那仍然是我需要帮助的地方。可以加入这三个查询,但我仍然不知道如何正确显示结果。我在上面的搜索功能不起作用。