| Bug #18680 | Logical OR fails if value is a string | ||||
|---|---|---|---|---|---|
| Submitted: | 31 Jul 2002 2:53pm UTC | Modified: | 1 Apr 2004 3:16am UTC | ||
| From: | su-php at bossi dot com | Assigned to: | |||
| Status: | Closed | Category: | Documentation problem | ||
| Version: | 4.3.2-dev 5CVS-2003-03-10 | OS: | any | ||
[31 Jul 2002 2:53pm UTC] su-php at bossi dot com
[31 Jul 2002 3:03pm UTC] su-php at bossi dot com
I stated that strval() does not work. However a kludge that DOES work is: echo "Val : ".((0 + $opt['time']) | (0 + $opt['date']));
[31 Jul 2002 6:57pm UTC] sniper@php.net
Please add a short but COMPLETE example script which clearly demonstrates the problem.
[1 Aug 2002 3:22pm UTC] su-php at bossi dot com
It is not a session related problem, but a string conversion problem.
Below is a script which shows the problem. When doing test, remember
that the values should be based on a power of two, that is: 0x01, 0x02,
0x04, 0x08, 0x10, 0x20, ...
-------------------------
<html><head></head><body>
<h1>ORing Values</h1>
<?
do_table( 1, '1', 8, '8' );
do_table( 2, '2', 8, '8' );
do_table( 2, '2', 4, '4' );
do_table( 2, '2', 16, '16' );
do_table( 1, '1', 16, '16' );
?>
</body></html>
<?
function do_table( $val_1_num, $val_1_txt, $val_2_num, $val_2_txt )
{
?>
<br>
<table border="1">
<tr>
<th></th>
<th>Value 1</th>
<th>Value 2</th>
<th>Raw OR</th>
<th>strval OR</th>
<th>0+ OR</th>
</tr>
<tr>
<td>Number</td>
<td align="center"><?= $val_1_num ?></td>
<td align="center"><?= $val_2_num ?></td>
<td align="center"><?= $val_1_num | $val_2_num ?></td>
<td align="center"></td>
<td align="center"><?= (0 + $val_1_num) | (0 + $val_2_num) ?></td>
</tr>
<tr>
<td>Text</td>
<td align="center"><?= $val_1_txt ?></td>
<td align="center"><?= $val_2_txt ?></td>
<td align="center"><?= $val_1_txt | $val_2_txt ?></td>
<td align="center"><?= strval($val_1_txt) | strval($val_2_txt) ?></td>
<td align="center"><?= (0 + $val_1_txt) | (0 + $val_2_txt) ?></td>
</tr>
</table>
<?}?>
-------------------------
[9 Mar 2003 7:28pm UTC] moriyoshi@php.net
<?php
var_dump(ord(chr(32) | chr(64)));
var_dump(32 | 64);
var_dump(ord(chr(127) & (chr(32) | chr(16))));
var_dump(127 & (32 | 16));
var_dump("ABC" | " bc"); // should result in "abc"
?>
If a bitwise operation are performed between two string nodes, that ends
up with the results of that operation of the values of each character's
character codes.
[10 Mar 2003 1:32pm UTC] moriyoshi@php.net
Should be a documentation problem for the sake of backwards compatibility, though I don't think this feature is useful anyhow.
[1 Apr 2004 3:16am UTC] irchtml@php.net
This bug has been fixed in the documentation's XML sources. Since the online and downloadable versions of the documentation need some time to get updated, we would like to ask you to be a bit patient. Thank you for the report, and for helping us make our documentation better.
