我想在输出中显示以下数组为246357,它不处理第一个子数组,并且剩余的子数组组合应该如下$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帮助。
foreach($array as $n)
{
$a.=$n[0];
$b.=$n[1];
}
echo "$a".","."$b";
跳过第一个元素的一种方法是使用标志变量$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];
}
这将帮助您跳过第一个数组
foreach($array as $key => $n)
{
if($key>0)
{
$a.=$n[0];
$b.=$n[1];
}
}
您可以使用这个:-
$flag = true;
foreach ($array as $n) {
if ($flag==false) {
$a .= $n[0];
$b .= $n[1];
} else {
$flag = false;
}
}
使用从偏移量1开始的常规for
循环而不是foreach
循环,跳过第一个子数组。
for ($i = 1; $i <= count($array); $i++) {
$a.=$array[$i][0];
$b.=$array[$i][1];
}
替代方案
- 您也可以使用array_shift()移除第一个子数组并使用您已有的代码
- 按照许多其他答案的建议使用标志(不过我认为这太复杂了)
另一个代码改进建议
线路
echo "$a".","."$b";`
可以写成
echo "{$a},{$b}";
我认为它可读性更强。
在没有任何循环的情况下检查此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
)