如何显示特定的阵列组合?

时间:2013-07-24 08:21:22

标签: php arrays

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

5 个答案:

答案 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];
}

<强>替代

  1. 您还可以使用array_shift()删除第一个子数组 并使用您已有的代码。
  2. 使用一个标志,因为许多其他答案都表明了(我认为它过于复杂了)。
  3. 另一个代码改进建议

    该行

    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
)