Является ли это преобразование правильным? - PullRequest
0 голосов
/ 28 января 2011

Я пытался преобразовать этот ASP-код в PHP, и хотел бы знать, если это правильно:

ASP:

Set emp = Server.CreateObject("Scripting.Dictionary")

EM_GENERAL=0
EM_AUDIO=1
EM_VIDEO=2 

emp.Add EM_GENERAL, "General"
emp.Add EM_AUDIO, "Audio"
emp.Add EM_VIDEO, "Video"

For each em in Emp
Response.Write "<option value=" + CStr(em)
If em = CInt(IT_FIELD) Then
    Response.Write " selected"
End If
Response.Write ">"
Response.Write Emp.Item(em)
Next

PHP:

$EM_GENERAL=0;
$EM_AUDIO=1;
$EM_VIDEO=2;

$emp = array();
$emp[$EM_GENERAL] = "General";
$emp[$EM_AUDIO] = "Audio";
$emp[$EM_VIDEO] = "Video";

foreach ($emp as $em) {
  echo "<option value=" + ($em);
  if ($em == intval($IT_FIELD)) {
    echo " selected";
  }
  echo ">";
  echo $em;
}

1 Ответ

0 голосов
/ 28 января 2011

В VB цикл For Each перебирает ключи словаря, а не значения, поэтому в вашем коде ASP em является числовым ключом записей emp. В PHP foreach перебирает значения, поэтому $em - это значение, а не ключ. Ваш if ($em == intval($IT_FIELD)) чек не будет работать должным образом. К счастью, цикл php foreach также поддерживает синтаксис foreach ($array as $key => $value), где $value будет эквивалентно Dictionary.Item(key).

Попробуйте вместо этого:

foreach ($emp as $em => $value) {
  echo "<option value=" + ($em);
  if ($em == intval($IT_FIELD)) {
    echo " selected";
  }
  echo ">";
  echo $value;
}
...