2

我想在输出中显示以下数组为 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 帮助。

foreach($array as $n)
{
    $a.=$n[0];
    $b.=$n[1];
}
echo "$a".","."$b";
4

5 回答 5

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];
}
于 2013-07-24T08:25:44.463 回答
1

通过使用从偏移量 1 开始的常规for循环而不是循环来跳过第一个子数组foreach

for ($i = 1; $i <= count($array); $i++) {
    $a.=$array[$i][0];
    $b.=$array[$i][1];
}

备择方案

  1. 您还可以使用array_shift()删除第一个子数组 并使用您已有的代码。
  2. 使用许多其他答案所暗示的标志(尽管我认为它过于复杂)。

另一个代码改进建议

线

echo "$a".","."$b";`

可以写成

echo "{$a},{$b}";

我认为这更具可读性。

于 2013-07-24T08:24:49.690 回答
1

检查这个分析器没有任何循环:

$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
)
于 2013-07-24T11:39:31.417 回答
1

你可以使用这个: -

$flag = true;
foreach ($array as $n) {
    if ($flag==false) {
        $a .= $n[0];
        $b .= $n[1];
    } else {
        $flag = false;
    }
}
于 2013-07-24T08:27:45.600 回答
1

这将帮助您跳过第一个数组

foreach($array as $key => $n)
{
 if($key>0)
 {
    $a.=$n[0];
    $b.=$n[1];
 }
}
于 2013-07-24T08:25:42.167 回答