我想创建一个动态数组并处理数组内的数据。例子:
a) 如果有2作为数字输入值,那么它必须创建 2^2 = 4 个数组,每个数组有 2 个元素。这些元素采用二进制形式(2 个元素)=> 00, 01, 10, 11
[pre]
Array1[] = {0, 0};
Array2[] = {0, 1};
Array3[] = {1, 0};
Array4[] = {1, 1};
[/pre]
b) 如果 i 3作为数字输入值,则它必须创建 2^3 = 8 个数组,每个数组包含 3 个元素。这些元素采用二进制形式(3 个元素)=> 000, 001, 010, 011, 100, 101, 110, 111
[pre]
Array1[] = {0, 0, 0};
Array2[] = {0, 0, 1};
Array3[] = {0, 1, 0};
Array4[] = {0, 1, 1};
Array5[] = {1, 0, 0};
Array6[] = {1, 0, 1};
Array7[] = {1, 1, 0};
Array8[] = {1, 1, 1};
[/pre]
然后我想使用这个数组元素来计算 mysql 表中存在多少“000”到“111”。该表只有 2 行:id (auto_increment) 和 value (0/1)。在表格中搜索“101”的示例:
[pre]
id | value
----------
1 | 1
2 | 1 --
3 | 0 | => (1)
4 | 1 --
5 | 0 | => (2)
6 | 1 --
7 | 0
8 | 0
9 | 1
10 | 1
.. | ..
.. | ..
5000 | 1 --
5001 | 0 | => (n)
5002 | 1 --
5003 | 1
... | ...
[/pre]
一位朋友(Barmar)在 mysql 中给出了一个解决方案,以获取表中有多少“101”存在(例如: Array6[] = {1, 0, 1};例如),通过使用以下代码:
[pre]
select count(*) match_count
from TheTable t1
join TheTable t2 on t1.id+1 = t2.id
join TheTable t3 on t1.id+2 = t3.id
where t1.value = 1 and t2.value = 0 and t3.value = 1
[/pre]
我的问题:
1)如何使 8 个数组包含元素 {0,0,0} ... {1,1,1} 输入 = 3?
2)如何使这8个数组的“FOR”例程在mysql表中搜索模式?我在下面尝试了这个,但结果是错误的......
[pre]
....
for ($i=1; $i<=8; $i++) { // this is 2^3 = 8 arrays
for ($k=0; $k<3; $k++) {
$element$k = Array$i[$k]; // get each array elements (3 elements in each array)
}
$result = select count(*) match_count
from TheTable t1
join TheTable t2 on t1.id+1 = t2.id
join TheTable t3 on t1.id+2 = t3.id
where t1.value = $element$k and t2.value = $element$k and t3.value = $element$k; // these values must change for every array ....
$query = mysql_query("INSERT INTO theResult(binary,presence) VALUES("'.$element$k.'","'.$result.'") ");
} // end of for
[/pre]
我希望在 mysql 表“theResult”上看到这个:
[pre]
binary | presence
--------------------
000 | 21
001 | 18
010 | 32
011 | 11
100 | 44
101 | 17
110 | 8
111 | 25
[/pre]
但它不会那样发生...... :(请帮忙。谢谢