检索子代数PHP

时间:2014-06-13 03:08:32

标签: php sql search arrays

我有一个数据库,其中有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,

1 个答案:

答案 0 :(得分:0)

试试这个

<?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>';
?>