迭代数组,键数是可变的,第一个值被不同地处理

时间:2012-01-12 10:19:27

标签: php arrays

嗨我有一个带有可变数量键的PHP数组(键是0,1,2,3,4 ..等) 我想以不同的方式处理第一个值,然后其余的值相同。 最好的方法是什么?

6 个答案:

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

修改

如果您希望避免使用此类功能,请随意选择任何其他正确答案。这正是你真正喜欢的。如果你反复计划循环使用一个或多个具有不同回调的数组,我建议使用一个函数来重用代码。 (我是一个优化狂热者)