我有一个循环(基于数组 - 可以增长但不是太多 - 最多6个键)例如:array('12','34','56',48')
。我想要做的是循环数组,然后THEN循环再次找到“前一个”数组val。PHP我可以做这个循环吗?
例如,key[0] = 12
,key[1] = 34
然后key[0] = 12
,key[2] = 56
然后key[1] = 34
等
数组的值是从数据库ID和我需要(希望)到基于“当前键”运行查询和以前的关键。
任何想法 - 可以做到吗?
我有一个循环(基于数组 - 可以增长但不是太多 - 最多6个键)例如:array('12','34','56',48')
。我想要做的是循环数组,然后THEN循环再次找到“前一个”数组val。PHP我可以做这个循环吗?
例如,key[0] = 12
,key[1] = 34
然后key[0] = 12
,key[2] = 56
然后key[1] = 34
等
数组的值是从数据库ID和我需要(希望)到基于“当前键”运行查询和以前的关键。
任何想法 - 可以做到吗?
如果我理解正确,你想这样做。
for($i=1; $i < count($array); $i++) {
$currentValue = $array[$i];
$previousValue = $array[$i-1];
// Here you can run a query based on the current and the previous value
}
例如,以$array
如array(12,34,56,48)
你将有3次迭代,其中$currentValue
和$previousValue
将有以下的值:
由于上述情况,您会错过使用当前值的零索引 - 这可能会阻止某些需要的操作。 – 2010-08-13 15:54:56
如果要求使用当前值和前一个值执行查询,则必须以第二个项目开始,否则上一个值不存在。无论如何,我明白这取决于所需的具体行为,我认为我提到的那个。 – 2010-08-13 15:59:22
<?
$val = 56;
$data = array(12, 34, 12, 56, 34);
for($i = 0; $i < count($data); $i++) {
if($data[$i] == $val) {
if($i == 0) die("No previous");
$previous = $data[$i-1];
}
}
echo "Previous to $val was $previous";
或更好,但使用array_search() 找到索引给出$ VAL
$num_elem = count($array);
for ($i = 0; $i < $num_elem; $i++)
{
$curr_val = $array[$i];
$prev_val = (0 == $i) ? null: $array[$i-1];
}
不像其他的解决方案,我将使用基于索引的访问建议对。
在php中,关键不一定按顺序。例如,如果在阵列上调用natsort
,关系将保持不变,但阵列本身实际上是重新排序的,导致违反直觉的结果。 (见Why isn't natsort (or natcasesort) working here?)
我会使用类似:
<?php
$ids = array('12','34','56','48');
$previous = false;
foreach($ids as $id)
{
echo "current: $id\n";
echo "previous: $previous\n";
$previous = $id;
}
?>
我想你失踪阵列的点。或者你还没有足够好地描述你的问题。 – 2010-08-13 15:52:53
你可以更多地阐述你所寻找的例子吗?例如拼写出2个循环。 – webdad3 2010-08-13 15:55:54