我有一个数据库,其中有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,
等
答案 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>';
?>