2012-05-17 2 views
0

Я новичок в php. Я пытаюсь построить массив в php и закодировать его в JSON. Это будет получено с помощью xmlhttprequest на стороне клиента.Невозможно добавить строку в массив из переменной в php:

Но есть проблема. Я не могу написать переменную в массив.

Это то, что я пытаюсь сделать.

$name=$_GET['username']; 
if (strcmp($name, 'harry')) { 
    $arr['status'] = 'success'; 
    $arr['name'] = $name; 
    echo json_encode($arr); 
} 

Но когда я делаю запрос на стороне клиента. Я получаю нулевое значение вместо переменной. все остальное в массиве отлично, за исключением этого значения.

текст ответа, который я получаю

{"status":"success","username":null} 

Я делаю что-то неправильно в присвоении значения?

Спасибо

+0

Ваш код выглядит нормально. Можете ли вы сделать эхо в $ _GET ['username'], чтобы проверить, получаете ли вы имя от запроса или нет. –

+0

Я попробовал echo $ _GET ['username'], но он возвращает пустую строку. Но сравнение строк, если (strcmp ($ name, 'harry')) имеет значение true. что означает, что я получаю строку от клиента? Спасибо –

+0

use strcmp ($ name, 'harry') === 0 как упоминается itachi. Но проблема в том, что вы ничего не получаете в запросе. –

ответ

2

Там нет ключа «имя пользователя» в массиве вы представляемого на стороне клиента, вы должны использовать $ обр [ «имя»] вместо

+0

. О, извините. да, это показывает «имя»: null. Как решить эту проблему? Спасибо –

+0

как вы печатаете этот массив на стороне клиента? можете ли вы опубликовать строку кода, которую вы используете? –

1

я не знаю, преимущество использования STRCMP() в этом случае, однако это будет исправить вашу проблему

if (strcmp($name, 'harry') === 0) { 

использование STRCMP() немного счетчик интуитивно здесь, так что вы можете использовать

if ($name === 'harry') { 
+0

Я собирался сказать то же самое. Похоже, что «username» вообще не передается, поэтому 'strcmp (null, 'harry')' оценивается как true. – Okonomiyaki3000

+0

Странно, я получаю int (-5) от этой функции, либо в руководстве PHP указано: _strcmp() Возвращает <0, если str1 меньше str2; > 0, если str1 больше, чем str2, и 0, если они равны. Таким образом, явный тест на int (0) требуется для того, чтобы «истинный» результат обеих строк был одинаковым. – Scuzzy

0

Следующий код работает для меня ... Проверьте это

$name=$_GET['username']; 
if(strcmp($name,'harry')==0) 
{ 
$arr['status']= 'success'; 
$arr['name']=$name; 
echo json_encode($arr); 
} 
0
$name=$_GET['username']; 
if (strcmp($name, 'harry')===0) { 
    $arr['status'] = 'success'; 
    $arr['username'] = $name; <---------- changed the index in $arr from 'name' to 'username' 
    echo json_encode($arr); 
} 

strcmp возвращает 0 если две строки равны (помнить чувствителен к регистру)

+0

Спасибо, ребята, я выяснил проблему. Да, я ошибся в создании URL-адреса. Спасибо за помощь –

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