PHP我可以循环吗?

时间:2010-08-13 15:47:23

标签: php arrays key

我有一个循环(基于一个数组 - 可以增长但不是太多 - 最多6个键),例如:array('12','34','56',48')。我想要做的是循环遍历数组和THEN循环再次找到“前一个”数组val。

例如,key[0] = 12key[1] = 34然后key[0] = 12key[2] = 56然后key[1] = 34等。

数组的值是来自数据库的ID,我需要(希望)根据“当前密钥”和前一个密钥运行查询。

任何想法 - 可以吗?

5 个答案:

答案 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)

我认为这里不需要多个循环。我会使用next()prev()current()函数来使用数组的内部指针。

答案 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将具有以下值:

  1. 第一次迭代:$ currentValue = 34,$ previousValue = 12
  2. 第二次迭代:$ currentValue = 56,$ previousValue = 34
  3. 第三次迭代:$ currentValue = 48,$ previousValue = 56

答案 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的索引