2013-03-29 2 views
0

Я никогда не умел использовать циклы. У меня есть следующая проблема:Переменные в петле foreach в PHP

Когда я выполняю приведенный ниже код, я получаю это сообщение об ошибке: "Parse error: syntax error, unexpected T_VARIABLE in XXXXXXXXX on line 8". Я просто хочу дать каждому из элементов в массиве «рейтинг» о том, насколько высока стоимость.

<? 
    $input = array(12413535, 13452465246, -13451, 8); 
    $input_size = count($input); 
    $var_rating = array(); 
    foreach ($input as $value) { 
     $var_rating[$value] = 0; 
     foreach ($input as $test) { 
      if ($value > $test) { 
       $var_rating[$value] = $var_rating[$value] + 1; 
      } 
      else {} 
     } 
    } 

    var_dump($var_rating); 
?> 

Извините за путаницу. Я отредактировал свой вопрос и добавил полный код.

+4

Что на линии 8? – j08691

+0

Это интересно, я получаю * Ошибка PHP Parse: синтаксическая ошибка, неожиданная '.' в XXXXXXXXX в строке 1 *. Кажется, что код не имеет слишком много общего с тем, что вы использовали для получения сообщения об ошибке. – Oswald

+1

@ Oswald: Вы тоже скопировали точки? – 2013-03-29 20:40:34

ответ

2

Похоже, что виновник вашего кода не работает, это скопированный скрытый скрытый символ в строке 8, перед переменной $test. Удаление знака «пробел» и знака >, а также повторное включение обоих исправлений в вашу проблему.

<?php 
    $input = array(12413535, 13452465246, -13451, 8); 
    $input_size = count($input); 
    $var_rating = array(); 
    foreach ($input as $value) { 
     $var_rating[$value] = 0; 
     foreach ($input as $test) { 
      if ($value > $test) { 
        //^right here there is a hidden character, remove it and the code works fine 
       $var_rating[$value] = $var_rating[$value] + 1; 
      } 
      else {} 
     } 
    } 

    var_dump($var_rating); 
?> 
+0

Спасибо вам большое! Вы спасли меня. Кстати ... Что я могу сделать, чтобы избежать использования этих скрытых символов в моем коде? –

+0

@JanBayram Во-первых, если это решит вашу проблему, подумайте о том, чтобы принять ее, щелкнув выделенную галочку под стрелкой вниз. Во-вторых, используйте IDE или редактор кода, который может выделить такие вещи. Я использовал Notepad ++, чтобы найти это, так как, когда я выбрал строку, он перечислил 26 символов, когда должно быть 25. Вот как я понял, где это было. – Daedalus

+0

Ну, я использую Coda 2 на своем Mac. И как я даже набираю эти символы? –

1

У вас есть неразрывный пробел вместо обычного пространства в строке 8, между > и $test. Замените его обычным пространством, и все будет хорошо. Используйте расширенный текстовый редактор, например PsPad, который обеспечивает возможность просмотра непечатаемых символов вместо блокнота :)

1

Это только для лучшего показывая причину этой ошибки, я использовал Frhed

Там скрыт Â персонаж :)

enter image description here

Смежные вопросы