Что не так в этом цикле?

#php

#php

Вопрос:

Я проверил и не нашел ошибок:

 $_SESSION['variable'] = 2 
$preparado[1] = "Miguel";
$preparado[2] = "Carlos";
$segundo[1]= "Beltran";
$segundo[2] = "Sanz";

for($i = 1; $i <=$_SESSION['variable']; $i  ){
  $listo[$i] = $preparado1[$i] . $segundo[1];
}


for($i = ($_SESSION['variable']   1) ; $i <= ($_SESSION['variable'] * 2); $i  ){
  for($n = 1; $n <=$_SESSION['variable']; $n  ){
    $listo[$i] = $preparado1[$n] . $segundo[2];
  }
}

for($i = 1;$i <=$_SESSION['variable'] * $_SESSION['extension']; $i   ){
  echo   $final[$i] . "</br>";
}
  

Я получаю это:

 MiguelBeltran
CarlosBeltran
CarlosSanz
CarlosSanz
  

Но я должен получить это:

 MiguelBeltran
CarlosBeltran
MiguelSanz
CarlosSanz
  

Спасибо!!

Ответ №1:

Я предполагаю, что вы намеревались

 $preparado[0] = "Miguel"; // rather than [1]
$preparado[1] = "Carlos";
  

Комментарии:

1. Настоящая проблема исходит от ваших вложенных for циклов. Первый переходит от i 1 к i * 2 — это нормально (немного необычно, но это работает). Однако, для каждого возможного значения i вы перебираете все значения n в диапазоне от 1 до variable . Учитывая, как вы сохраняете результат, я совершенно уверен, что это не то, что вы предполагали. Поэтому продолжайте проверять логику вашего цикла.

Ответ №2:

Опубликованный вами код не соответствует представленному вами результату:

  1. Вы никак не можете получить Miguel в своем выводе, как вы делаете:

     $preparado[1] = "Miguel";
    $preparado[1] = "Carlos";
      

    таким образом, единственная переменная, которой вы присваиваете Miguel , перезаписывается в следующей строке.

  2. Переменной нет $preparado1 .

Вам следует опубликовать код, который вы фактически использовали для генерации полученного результата.

Комментарии:

1. Это типографская ошибка, но в исходном коде это правильно, потому что генерируется другим циклом.

Ответ №3:

Учитывая:

 $_SESSION['variable'] = 2 
$preparado[1] = "Miguel";
$preparado[2] = "Carlos";
$segundo[1]= "Beltran";
$segundo[2] = "Sanz";
  

Используйте:

 for ($i = 1; $i <= $_SESSION['variable'];   $i) {
    for ($j = 1; $j <= $_SESSION['variable'];   $j) {
        $listo[] = $preparado[$j].$segundo[$i];
    }
}
  

Комментарии:

1. не работает, и $listo[] следует продолжить с первого цикла, спасибо!!

Ответ №4:

 $preparado[1] = "Miguel";
$preparado[1] = "Carlos";
$segundo[1]= "Beltran";
$segundo[2] = "Sanz";
  

Вы назначили $preparado[1] дважды.

Комментарии:

1. Это типографская ошибка, но в исходном коде это правильно, потому что генерируется другим циклом.