【发布时间】:2012-07-18 18:02:20
【问题描述】:
我知道我可以使用array_slice() 创建一个新数组,其中包含除第一个和最后一个元素之外的所有元素,对每个元素执行操作,然后将原始的第一个和最后一个值重新添加回去。不过,这似乎有点矫枉过正。有没有更简洁的方法来对所有内部数组元素而不是在末端执行操作(在这种情况下,只是将字符串附加到数组值中)?
【问题讨论】:
我知道我可以使用array_slice() 创建一个新数组,其中包含除第一个和最后一个元素之外的所有元素,对每个元素执行操作,然后将原始的第一个和最后一个值重新添加回去。不过,这似乎有点矫枉过正。有没有更简洁的方法来对所有内部数组元素而不是在末端执行操作(在这种情况下,只是将字符串附加到数组值中)?
【问题讨论】:
我可能会遗漏一些东西,但这不是解决问题吗?
for ($i = 1; $i < count($arr) - 1; $i++) {
// Do stuff to $arr[$i], like prefixing and suffixing
$arr[$i] = 'prefix ' . $arr[$i] . ' suffix';
}
【讨论】:
array_keys($arr)[$i],然后使用该键对项目进行操作。
$arr[i] 只会影响 $arr[1];
$arr[1],但打印它count($arr)-2 次。
for 循环之前执行print_r($breadcrumb) 以确保您认为数组中的内容确实如此。 for 循环代码是正确的,所以肯定有其他问题。
这个呢:
reset($array);
$firstKey = key($array);
end($array);
$lastKey = key($array);
foreach($array as $key => $value) {
if ($key === $firstKey || $key === $lastKey) {
continue;
}
do_your_stuff($key, $value);
}
【讨论】:
有很多方法。一种是:
for($i = 1; $i < count($arr)-1; $i++) {
// process $arr[$i];
}
如果您的数组是关联的,并且已经以某种有意义的方式排序,您可以这样做:
$keys = array_keys($arr);
for($i = 1; $i < count($arr)-1; $i++) {
// process $arr[$keys[$i]];
}
【讨论】: