【问题标题】:Retriving Subarrays PHP检索子数组 PHP
【发布时间】:2014-06-13 03:08:32
【问题描述】:

我有一个包含 6 列 A B C D E X 的数据库,对于 ABCDE 的每个组合,我都有不同的 X 值。

我需要一种方法来搜索,这将允许不同组合的所有 X 值(例如,当 A=1 时所有 X,或者当 A=1 和 B=2 时所有 X 等)

我的想法是把它翻译成一个看起来像这样的 5-D 数组:

Array[A][B][C][D][E]=X;

但现在我正在尝试提取子数组,当我不知道维度中的多少将保持不变时。所以我需要能够为Array[1][5][][][]Array[2][4][5][][] 等提取X 的所有值。

我完全被困住了。

我正在尝试在另一个循环中执行 6 个循环,但我不知道如何处理那些不变的循环。

对想法的帮助将非常有帮助。

编辑

Database:
A B C D E X
1 1 1 1 1 53
1 1 2 3 2 34
2 1 1 4 2 64

把它变成一个数组:

Array[1][1][1][1][1]=53
Array[1][1][2][3][2]=34

对于

Input: A=1
Output 53,34
Input A=1,B=1,C=1
Output: 53,

【问题讨论】:

  • 我需要查看数据示例和期望的结果来理解这个
  • @Dagon “我需要查看数据示例……”您的意思是“我们需要……”
  • 我不知道你需要什么杰克,但我相信它只是爱:-)
  • 只需更改您的查询:SELECT x FROM table WHERE a = ?, b= ?
  • 请看下面对 Tantos 的评论

标签: php sql search arrays


【解决方案1】:

那就试试这个

<?php
$arr = array();
$result = mysql_query("SELECT A,B,C,D,E,X FROM table_name ORDER BY A ASC,B ASC,C ASC,D ASC,E ASC");
if(mysql_num_rows($result) > 0) {
    while($row = mysql_fetch_assoc($result)) {
        array_push($arr,$row);
    }
}

function search($arr,$values) {
    $return = array();
    foreach($arr AS $key => $value) {
        $ok = true;
        foreach(array('A','B','C','D','E') AS $letter) {
            if(array_key_exists($letter,$values)) {
                if($value[$letter] != $values[$letter]) {
                    $ok = false;
                    break;
                }
            }
        }

        if($ok) array_push($return,$value['X']);
    }
    return (($return) ? implode(',',$return) : false);
}

echo '<pre>';
print_r(search($arr,array('A' => 1)));
echo '</pre>';
?>

【讨论】:

  • 谢谢Tanatos,事情会很快完成,我不想每次都连接到数据库。我希望获得所有数据并检索我需要的部分
  • 谢谢你 Tanatos,这很完美!
猜你喜欢
  • 2013-07-31
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 2012-05-27
  • 2022-01-08
相关资源
最近更新 更多