webForumDet fria alternativet

Textsträng skrivs ut som 0!?!?!

5 svar · 313 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Jag låter PHP skriva ut en helt vanlig HTML-form. Allt blir som man kan vänta sig fram till slutklämmen... vill säga...

källa skrev:

....
<tr><td id="wordBoxPos5">-</td>
<td><input type="text" id="wordBoxWord5" onFocus="markWord(5)" disabled>
<input type="button" class="buttonColorG" id="wordBoxAddButton5"
onclick="addWord(this.form, 5)" value="Add!" disabled>
<input type="button" class="buttonColorG" id="wordBoxClrButton5"
onclick="clearWord(this.form, 5)" value="Clear!" disabled>
<input type="hidden" id="wordBoxID5" value="">
</td>
</tr>0</div>

Motsvarande PHP-kod:

   for ($ix = 0; $ix < 6; $ix++) {
      echo '   <tr><td id="wordBoxPos'.$ix.'">-</td>
       <td><input type="text" id="wordBoxWord'.$ix.'" onFocus="markWord('.$ix.')" disabled>
           <input type="button" class="buttonColorG" id="wordBoxAddButton'.$ix.'"
                  onclick="addWord(this.form, '.$ix.')" value="Add!" disabled>
           <input type="button" class="buttonColorG" id="wordBoxClrButton'.$ix.'"
                  onclick="clearWord(this.form, '.$ix.')" value="Clear!" disabled>
           <input type="hidden" id="wordBoxID'.$ix.'" value="">
       </td>
   </tr>';
   } //Om jag avkommenterar echot nedan försvinner nollan!
   echo '<!-- Holds the ID for the currently marked word. If no word is marked it has the value '-'. -->
           <input type="hidden" id="currentWordID" value="-">
       </td>
   </tr>
</table>
</form></P>';

echo '</div>';

Vad i? Hur kan den strängen generera 0? Och vart tar strängen vägen? :q :x

aasahMedlem sedan mars 20034 471 inlägg
#2

aasah skrev:

echo '<!-- Holds the ID for the currently marked word. If no word is 
                  marked it has the value '-'. -->...';

Hrm.... Fattar fortfarande inte varför det blir noll, men felet är här. '-' avslutar ju strängen! :r (Löses med \'-\'.)

stevenetMedlem sedan juni 20001 251 inlägg
#3

[r] Du hann tydligen före.

MatteMedlem sedan aug. 20002 975 inlägg
#4

aasah skrev:

Hrm.... Fattar fortfarande inte varför det blir noll, ...

Anledningen till att du fick noll är samma som varför du får noll på det här:

echo 'A' - 'B';

Du kan inte substrahera bokstäver, så PHP typomvandlar, och värdet på strängarna blir då 0 (noll).

aasahMedlem sedan mars 20034 471 inlägg
#5

Matte skrev:

Anledningen till att du fick noll är samma som varför du får noll på det här:

echo 'A' - 'B';

Du kan inte substrahera bokstäver, så PHP typomvandlar, och värdet på strängarna blir då 0 (noll).

Jag funderade på det... men hur kan det stämma? :q Om man vill utföra ett boolskt test så är ju false, 0, '' och "" samma värde. Medan varje annan sträng är true. Borde inte det betyda att en icke-tom sträng konverteras till någon siffra != 0? Eller kan det vara så att vilken annan sträng som helst blir 1, så man får 1-1 som är 0? :q

MatteMedlem sedan aug. 20002 975 inlägg
#6

Testa att köra intval() eller floatval() på en sträng, så ser du vad typomvandlingen kan tänkas ge.
Visserligen ger det inte alltid samma i uttrycket som t.ex. intval skulle ge (beroende på strängen), men det ger dig en idé om vad som händer.
Typomvandling till numeriskt värde ger inte riktigt samma sak som typomvandling till booleanskt värde.

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)