2013-11-13 3 views
1

Я получаю «синтаксическую ошибку, неожиданную T_STRING» на этой строке и не могу найти виновника. Искал google, этот форум и т. Д. И все еще застрял.неожиданный T_STRING?

foreach($result in $results){ 

В этом блоке:

<?php 
    $results = mysql_fetch_array($row_rsCategories); 
    $filters = array(); 

    foreach($result in $results){ 
    // assuming each result has an array of filters 
    $filters = array_merge($filters, $result['filter']); 
    } 

    $filters = array_unique($filters); 
    $csFilters = implode(',',$filters); 
?> 

Что мне не хватает?

ответ

9

foreach в PHP работает круглый. Это

foreach ($results as $result) //... 
+1

Отличный ввод и многое очень быстро, спасибо всем! Выбрал этот, поскольку он обратился к рассматриваемой строке - хотел бы я принять более одного! – Gary

4
$results mysql_fetch_array($row_rsCategories); 

отсутствует = для назначения. PHP, в своей бесконечной мудрости, decides that you want a string.

+0

Fixed @minty, по-прежнему получение ошибки. – Gary

+1

@Gary: Другой - это то, на что ответил Йоханнес. 'foreach ($ results as $ result)', хотя, а не 'for'. – rninty

+0

Исправлено в моем ответе, спасибо, что указали это! –

0

Вы не хватает равного (=) оператор после $ результатов на первой линии

должно быть

<?php 
    $results = mysql_fetch_array($row_rsCategories); 
    $filters = array(); 

    foreach($results as $result){ 
    // assuming each result has an array of filters 
    $filters = array_merge($filters, $result['filter']); 
    } 

    $filters = array_unique($filters); 
    $csFilters = implode(',',$filters); 
?> 

также заменить «в» с «как» внутри Еогеасп заявление.

1

Ошибки «неожиданной строки» на PHP - странные вещи. Они часто не указывают на то, что похоже на строку в коде.

Это из-за того, как PHP обрабатывает константы. FOOBAR может быть константой, например, как любая последовательность букв, которая не представляет собой нечто другое, например имя класса или ключевое слово. Но, если он не был определен, PHP рассматривает его как строку 'FOOBAR'. Это глупое поведение, но мы идем. Это для вас PHP.

Причина, по которой вы получаете эту ошибку, состоит в том, что in не является ключевым словом (см. Руководство пользователя list of keywords). И это не имя класса (хотя это может быть). Он не имеет неотъемлемого значения в PHP. Поэтому PHP видит это и думает «ага, вы явно хотите строку 'in'». Таким образом, ваш код выглядит примерно так:

foreach($result 'in' $results){ 

PHP теперь говорит: «О, но здесь не может быть ни одной строки!» Это, очевидно, верно. Однако не очевидно, почему дизайнеры PHP решили, что самое полезное сообщение на этом этапе будет состоять в том, чтобы сказать, что была неожиданная строка. Очень вводящий в заблуждение!

Но проблема, как указано в другом месте, то, что вы пытаетесь сделать петлю Javascript:

for (result in results) { 

Где вы стремитесь цикла PHP:

foreach ($results as $result) { 
+0

Спасибо @lonesomeday за объяснение того, как и почему, и ссылку - оба помогают мне понять. – Gary

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