嗨我有一个带有可变数量键的PHP数组(键是0,1,2,3,4 ..等) 我想以不同的方式处理第一个值,然后其余的值相同。 最好的方法是什么?
答案 0 :(得分:3)
$first = array_shift($array);
// do something with $first
foreach ($array as $key => $value) {
// do something with $key and $value
}
答案 1 :(得分:3)
我会这样做:
$firstDone = FALSE;
foreach ($array as $value) {
if (!$firstDone) {
// Process first value here
$firstDone = TRUE;
} else {
// Process other values here
}
}
...但这是否是最佳方式是值得商榷的。我会使用foreach
而不是任何其他方法,因为那么密钥是什么并不重要。
答案 2 :(得分:2)
这是一种方式:
$first = true;
foreach($array as $key => $value) {
if ($first) {
// something different
$first = false;
}
else {
// regular logic
}
}
答案 3 :(得分:1)
$i = 0;
foreach($ur_array as $key => $val) {
if($i == 0) {
//first index
}
else {
//do something else
}
$i++;
}
答案 4 :(得分:0)
如果您确定数组包含至少一个条目,我会这样做:
processFirst($myArray[0]);
for ($i=1; $i<count($myArray); $1++)
{
processRest($myArray[$i]);
}
否则你需要在处理第一个元素
之前测试它答案 5 :(得分: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;
});
修改强>
如果您希望避免使用此类功能,请随意选择任何其他正确答案。这正是你真正喜欢的。如果你反复计划循环使用一个或多个具有不同回调的数组,我建议使用一个函数来重用代码。 (我是一个优化狂热者)