Оберните создание опции функцией:
function makeOption($value)
{
echo "<option value=\"$value\"";
if(isset( Оберните создание опции функцией:
[110] Используйте ее в цикле while:
while( $rows = mysqli_fetch_assoc($resultset) )
makeOption($rows["Product"]);
POST['formCountries']) && in_array($value, Оберните создание опции функцией:
[110] Используйте ее в цикле while:
while( $rows = mysqli_fetch_assoc($resultset) )
makeOption($rows["Product"]);
POST['formCountries']))
echo ' selected="selected"';
echo ">$value</option>";
}
Используйте ее в цикле while:
while( $rows = mysqli_fetch_assoc($resultset) )
makeOption($rows["Product"]);
str (A ())
вызывает __ str __
, в свою очередь вызывая dict .__ str __ ()
.
Это dict .__ str __ ()
, который возвращает значение repr (A).
Я изменил код, чтобы очистить вещи:
class A(dict):
def __repr__(self):
print "repr of A called",
return 'repr(A)'
def __str__(self):
print "str of A called",
return dict.__str__(self)
class B(dict):
def __str__(self):
print "str of B called",
return dict.__str__(self)
И вывод:
>>> print 'call: repr(A) expect: repr(A) get:', repr(A())
call: repr(A) expect: repr(A) get: repr of A called repr(A)
>>> print 'call: str(A) expect: {} get:', str(A())
call: str(A) expect: {} get: str of A called repr of A called repr(A)
>>> print 'call: str(B) expect: {} get:', str(B())
call: str(B) expect: {} get: str of B called {}
Это означает, что функция str вызывает функцию repr автоматически , И поскольку он был переопределен для класса A, он возвращает «неожиданное» значение.
Я опубликовал обходное решение для этого. Проверьте это ... может оказаться полезным: http://blog.teltub.com/2009/10/workaround-solution-to-python-strrepr.html
PS Прочтите исходный пост, в котором я также представил проблему ... Проблема в том, что неожиданное поведение, которое застает вас врасплох ...