2 votes

Comment afficher une combinaison particulière de tableau?

Je veux afficher le tableau suivant en sortie comme 246,357 c'est-à-dire ne pas traiter le premier sous-tableau et aussi la combinaison des sous-tableaux restants devrait être comme $array[1][0].$array[2][0].$array[3][0], de même la combinaison devrait être $array[1][1].$array[2][1].$array[3][1]

$array=[
          [0,1],
          [2,3],
          [4,5],
          [6,7]
       ];

j'ai écrit le code suivant mais je n'ai pas pu contourner le premier sous-tableau donc ma sortie est 0246,1357. s'il vous plaît aidez.

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

2voto

PleaseStand Points 16718

Une façon de sauter le premier élément serait d'utiliser une variable d'indicateur $first:

$first = true;
foreach ($array as $n) {
    if ($first) {
        $first = false;
    } else {
        $a .= $n[0];
        $b .= $n[1];
    }
}

Une autre façon serait de supprimer le premier élément du tableau, afin qu'il soit sauté:

unset($array[0]);

Ou vérifiez la clé depuis la boucle foreach:

foreach ($array as $k => $n) {
    if ($k > 0) {
        $a .= $n[0];
        $b .= $n[1];
    }
}

Une autre façon serait d'utiliser array_shift(), qui change les clés numériques en plus de supprimer le premier élément:

array_shift($array);

Enfin, parce que votre tableau contient uniquement des clés entières consécutives à partir de 0, vous pourriez simplement utiliser une boucle for normale:

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

1voto

Ignorez le premier sous tableau en utilisant une boucle for régulière qui démarre à l'offset 1 au lieu de la boucle foreach.

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

Alternatives

  1. Vous pourriez également supprimer le premier sous tableau avec array-shift() et utiliser le code que vous avez déjà.
  2. Utilisez un indicateur comme le suggèrent beaucoup d'autres réponses (je trouve que c'est trop compliqué cependant).

Une autre suggestion d'amélioration du code

La ligne

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

Peut être écrite comme

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

ce qui, je pense, est bien plus lisible.

1voto

Sundar Points 3123

Cela vous aidera à sauter le premier tableau

foreach($array as $key => $n)
{
 if($key>0)
 {
    $a.=$n[0];
    $b.=$n[1];
 }
}

1voto

Vivek Points 2619

Vous pouvez utiliser ceci:-

$flag = true;
foreach ($array as $n) {
    if ($flag==false) {
        $a .= $n[0];
        $b .= $n[1];
    } else {
        $flag = false;
    }
}

1voto

Prasanth Bendra Points 9618

Vérifiez cette réponse sans aucune boucle :

$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 "

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X