我想在输出中显示以下数组为246,357,这是不要处理第一个子数组,并且剩余的子数组合应该是
$array[1][0].$array[2][0].$array[3][0]
,类似的组合应为$array[1][1].$array[2][1].$array[3][1]
$array=[
[0,1],
[2,3],
[4,5],
[6,7]
];
我写过以下代码,但无法绕过第一个子阵列,所以输出为0246,1357
。plz help。
foreach($array as $n)
{
$a.=$n[0];
$b.=$n[1];
}
echo "$a".","."$b";
答案 0 :(得分:2)
跳过第一个元素的一种方法是使用标志变量$first
:
$first = true;
foreach ($array as $n) {
if ($first) {
$first = false;
} else {
$a .= $n[0];
$b .= $n[1];
}
}
另一种方法是从数组中删除第一个元素,因此将跳过它:
unset($array[0]);
或者从foreach循环中检查密钥:
foreach ($array as $k => $n) {
if ($k > 0) {
$a .= $n[0];
$b .= $n[1];
}
}
另一种方法是使用array_shift()
,除了删除第一个元素外,它还会更改数字键:
array_shift($array);
最后,因为你的数组只包含从0开始的连续整数键,所以你可以使用普通for循环:
for ($i = 1; $i < count($array); $i++) {
$a .= $array[$i][0];
$b .= $array[$i][1];
}
答案 1 :(得分:1)
使用常规for
循环跳过第一个子数组,该循环从偏移量1而不是foreach
循环开始。
for ($i = 1; $i <= count($array); $i++) {
$a.=$array[$i][0];
$b.=$array[$i][1];
}
<强>替代强>
另一个代码改进建议
该行
echo "$a".","."$b";`
可以写成
echo "{$a},{$b}";
我认为这更具可读性。
答案 2 :(得分:1)
这将帮助您跳过第一个数组
foreach($array as $key => $n)
{
if($key>0)
{
$a.=$n[0];
$b.=$n[1];
}
}
答案 3 :(得分:1)
您可以使用: -
$flag = true;
foreach ($array as $n) {
if ($flag==false) {
$a .= $n[0];
$b .= $n[1];
} else {
$flag = false;
}
}
答案 4 :(得分:1)
在没有任何循环的情况下检查此anser:
$array=array(array(0,1),
array(2,3),
array(4,5),
array(6,7)
);
array_shift($array);
array_unshift($array, null);
$result = array_map("implode",call_user_func_array('array_map', $array));
echo "<pre>";
print_r($result);
输出:
Array
(
[0] => 246
[1] => 357
)