如果我有以下几点:有没有从第二个索引开始foreach的优雅方法,然后完成剩下的工作?
$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach ($a as $v) {
echo $v;
}
我怎样才能使输出:
2, 1, 3, 17
如果我有以下几点:有没有从第二个索引开始foreach的优雅方法,然后完成剩下的工作?
$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach ($a as $v) {
echo $v;
}
我怎样才能使输出:
2, 1, 3, 17
引述PHP Manual on Language Operators:
+运算返回附加到左手 阵列右手阵列;对于这两个数组中存在的键,将使用左手阵列中的元素,而右边数组中的匹配元素将被忽略。
$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
$b = array_values($a);
echo implode(', ', array($b[1], $b[0]) + $b), PHP_EOL;
输出:
2, 1, 3, 17
$values = array_values($a);
echo "{$values[1]}, {$values[0]}, "
foreach (array_slice($values, 2) as $v){
echo "$v, "
}
如果你关心最后一个逗号......
$values = array_values($a);
echo "{$values[1]}, {$values[0]}, "
$lastIndex = count($values) - 1;
foreach (array_slice($values, 2) as $k => $v){
echo $v;
if ($k != $lastIndex){
echo ", ";
}
}
你可以可能是这样做的:
<?php
$my_array = array(...);
$keys = array_keys($my_array);
$second_key = $keys[1]; // if your array can be whatever size, probably want to check that first
echo $my_array[$second_key];
foreach ($my_array as $key => $value) {
if ($key == $second_key) {
continue;
}
echo $value;
}
?>
是否有这样做的一个很好的目的是什么?为什么不按照你想要的顺序声明数组? – wallyk 2015-02-23 20:09:34
这是我从数据库查询中获得的顺序。嗯,也许我应该问在MySQL部分? – rotaercz 2015-02-23 20:46:29
什么*订购规则*会根据需要订购产品? - 除了“如果价值是'两'”,我看不到一个。“没有规则,没有排序.. – user2864740 2015-02-23 21:07:28