我有一个循环(基于一个数组 - 可以增长但不是太多 - 最多6个键),例如:array('12','34','56',48')
。我想要做的是循环遍历数组和THEN循环再次找到“前一个”数组val。
例如,key[0] = 12
,key[1] = 34
然后key[0] = 12
,key[2] = 56
然后key[1] = 34
等。
数组的值是来自数据库的ID,我需要(希望)根据“当前密钥”和前一个密钥运行查询。
任何想法 - 可以吗?
答案 0 :(得分:3)
$num_elem = count($array);
for ($i = 0; $i < $num_elem; $i++)
{
$curr_val = $array[$i];
$prev_val = ( 0 == $i) ? null: $array[$i-1];
}
答案 1 :(得分:2)
与其他解决方案不同,我建议使用基于索引的访问者反对。
在php中,键不一定是有序的。例如,如果在数组上调用natsort
,则key=>value
关系保持不变,但数组本身实际上已重新排序,从而导致违反直觉的结果。 (见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;
}
?>
答案 2 :(得分:1)
答案 3 :(得分:0)
如果我理解正确你想要这样做。
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
将具有以下值:
答案 4 :(得分:0)
<?
$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的索引