Почему этот код вызывает ожидаемую ошибку ")"? - PullRequest
1 голос
/ 25 июля 2011
<?php
  $i == array(1, 2); 
  $j == array(a, b); 
  $m == count($j); 
  $n == count($i); 
  for ( $i = 0; $i < $m; i++ ) 
  {
    for ( $j = 0; j < $n; j++) 
    { echo $i."x"$j; }
  }
?>

Ошибка ссылается на строку 6: for ( $i = 0; $i < $m; i++ )

Ответы [ 3 ]

8 голосов
/ 25 июля 2011

for ( $i = 0; $i < $m; $i++ )

Обратите внимание на знак доллара, который я добавил перед i++

То же самое относится и к вашему другому выражению for:

for ( $j = 0; $j < $n; $j++ )

Действительно странная ошибка, но она i не является переменной (хотя PHP может пометить E_NOTICE и преобразовать его в 'i'. Вы хотите сослаться на свою переменную, поэтому вы должны добавить $ до того, как.


Скорее всего, вы хотите:

<?php
  $iArray = array(1, 2); 
  $jArray = array('a', 'b'); 
  $n = count($iArray); 
  $m = count($jArray); 
  for ( $i = 0; $i < $n; $i++) {
    for ( $j = 0; $j < $m; $j++) { 
       echo $iArray[$i] . "x" . $jArray[$j]; 
    }
  }
?>

Вещи, которые я изменил:

  • == используется для сравнения, = используется для присваивания
  • Второй массив, который, как я предполагал, вам нужны строковые литералы 'a' и 'b', но вы могли бы также захотеть $a и $b, если бы вы объявили эти переменные где-то еще
  • вы присваиваете $i массиву, но затем в цикле for вы перезаписываете его $i = 0. Скорее всего, вы хотите, чтобы две переменные
  • отсутствовали $ с, как я упоминал выше
  • $m использовалось для количества переменных в $jArray, но вы использовали его для итерации по $iArray

Итак, всего несколько указателей, освежите в памяти PHP и постарайтесь убедиться, что ваш код работает с каждым небольшим изменением.Сделайте 1 модификацию, затем запустите ее.Очень легко потеряться в синтаксисе для PHP, поскольку это такой динамический язык сценариев

3 голосов
/ 25 июля 2011

У вас там куча проверок на равенство.Я предполагаю, что вы фактически присваиваете переменные, а не проверяете на равенство.

Измените все == проверки на равенство для присвоений (=)

1 голос
/ 25 июля 2011

У вас также неправильная конкатенация в строке 9, и я добавил комментарий, указывающий на другую возможную ошибку.

$i == array(1, 2); 
$j == array($a, $b); // <--Put in $ signs if these are variables in the array
$m == count($j); 
$n == count($i); 
for ( $i = 0; $i < $m; $i++ ) 
{
  for ( $j = 0; $j < $n; $j++) 
  { echo $i."x".$j; }
}
...