嗨我有一個PHP數組與可變數量的鍵(鍵是0,1,2,3,4 ..等) 我想以不同的方式處理第一個值,然後其餘值相同。 這樣做的最好方法是什麼?遍歷數組,鍵的數量是可變的,第一個值的處理方式不同
0
A
回答
3
$first = array_shift($array);
// do something with $first
foreach ($array as $key => $value) {
// do something with $key and $value
}
3
我這樣做:
$firstDone = FALSE;
foreach ($array as $value) {
if (!$firstDone) {
// Process first value here
$firstDone = TRUE;
} else {
// Process other values here
}
}
...但是這是否是最好的方式是值得商榷的。我會用任何其他方法使用foreach
,因爲那麼密鑰的含義並不重要。
+0
擊敗我17秒。 +1 – davidethell 2012-01-12 10:24:09
2
這裏有一種方法:
$first = true;
foreach($array as $key => $value) {
if ($first) {
// something different
$first = false;
}
else {
// regular logic
}
}
+0
有一個+1然後,我不懲罰打字慢;-) – DaveRandom 2012-01-12 10:25:16
1
$i = 0;
foreach($ur_array as $key => $val) {
if($i == 0) {
//first index
}
else {
//do something else
}
$i++;
}
0
如果你確定數組包含我會做這樣的至少一個條目:
processFirst($myArray[0]);
for ($i=1; $i<count($myArray); $1++)
{
processRest($myArray[$i]);
}
否則,你就需要在處理第一個元素之前對其進行測試
0
我已經爲您製作了一個功能!
function arrayCallback(&$array) {
$callbacks = func_get_args(); // get all arguments
array_shift($callbacks); // remove first element, we only want the callbacks
$callbackindex = 0;
foreach($array as $value) {
// call callback
$callbacks[$callbackindex]($value);
// make sure it keeps using last callback in case the array is bigger than the amount of callbacks
if(count($callbacks) > $callbackindex + 1) {
$callbackindex++;
}
}
}
如果你調用這個函數,它接受一個數組和無限的回調參數。當數組大於提供的函數的數量時,它保留在最後一個函數中。
您可以簡單地這樣稱呼它:
arrayCallback($array, function($value) {
print 'callback one: ' . $value;
}, function($value) {
print 'callback two: ' . $value;
});
編輯
如果你想避免使用這樣的函數,隨意挑選任何其他的正確答案。這正是你真正喜歡的。如果你反覆計劃用不同的回調函數循環一個或多個數組,我建議使用一個函數來重新使用代碼。 (我是一個優化怪胎)
相關問題
- 1. 遍歷一個可變的JSON數組
- 2. Java - 遍歷不同數組長度的3個變量
- 3. 遍歷表的可變數量
- 4. 使用相同的鍵循環遍歷一個關聯數組
- 5. 遍歷一個二維數組來獲得第二列的值
- 6. 如何使一個變量方法將單個數組作爲可變參數數組的第一個值?
- 7. C++遍歷不同類型的數組
- 8. 遍歷數組數組的所有值
- 9. 遍歷數組處理索引0
- 10. 遍歷數組獲取鍵和值
- 11. 函數式編程方法或大多數Pythonic方式一次使用兩個相鄰變量遍歷數組
- 12. 遍歷一個BPEL數組
- 13. .filter遍歷一個數組
- 14. 最好的方式,如果一個變量是一個數組
- 15. 如何在循環遍歷整個數組的同時循環遍歷從不同索引開始的數組?
- 16. 遍歷一個數組,並檢查值中的一個是一個字符串
- 17. 循環遍歷對象數組以查找是否有一個值不同
- 18. ngfor讓var的變量 - >遍歷整個數組+ 1
- 19. 循環遍歷一個變量數組並使用bind_param插入
- 20. 如何循環遍歷從不同索引開始的數組,同時仍然循環遍歷整個數組?
- 21. 以兩種方式遍歷INT數組
- 22. 遞歸遍歷數組改變特定鍵值
- 23. 快速的方式來遍歷不同形狀的多維數組?
- 24. 在NetLogo中計數一個變量的不同值的個數
- 25. 一個變量的遍歷值來填充另一個變量 - SPSS
- 26. 需要遍歷組變量
- 27. 帶零值的PHP遍歷數組
- 28. 遍歷3D數組的迭代方法
- 29. 如何獲得第一個數組鍵的值與第二個數組中的值相同?
- 30. 遍歷數組
我以爲這是一個答案,但決定反對它,因爲它會修改輸入數組。如果這並不重要,陣列可以安全地修改,這是最好的答案,你將擁有一個+1 :-) – DaveRandom 2012-01-12 10:24:24