我有一個循環(基於數組 - 可以增長但不是太多 - 最多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