PHP-显示不同值的同一变量

PHP-显示不同值的同一变量,php,Php,我正在从mysql中读取一些行来创建一组单选按钮。我需要写两次玩家的名字,第一次作为值属性,第二次作为文本。我不明白为什么相同的代码($players[$x])在输出html中产生两个不同的值。这是php代码: $players = readSqlFromMySql("select name from players"); for($x = 0; $x < count($players); $x++) { echo('<

我正在从mysql中读取一些行来创建一组单选按钮。我需要写两次玩家的名字,第一次作为值属性,第二次作为文本。我不明白为什么相同的代码($players[$x])在输出html中产生两个不同的值。这是php代码:

$players = readSqlFromMySql("select name from players");        
for($x = 0; $x < count($players); $x++) {                     
    echo('<input type="radio" name="radio-choice-v-2" value="' . 
    $players[$x] . '" id="name-choice-' . chr(66 + $x) . '" ><label 
    for="name-choice-' . chr(66 + $x) . '">' . $players[$x] . '</label>');
} 
$players=readSqlFromMySql(“从播放器中选择名称”);
对于($x=0;$x
这是呈现的输出html:

<input type="radio" name="radio-choice-v-2" value="<td style='width:150px;border:1px solid black;'>Amie</td>" id="name-choice-B">

因此,第一次,变量的输出是“td style=…”,第二次显示预期值(“Amie”)。发生什么事?是php吗?jquery?jquerymobile?我正在使用XAMPP

谢谢


原始答案 警告:这个答案是错误的,因为有一个错误。无论如何,这个答案解释了所描述的现象可能发生的方式


如果
$players
是一个对象而不是数组,那么您所描述的内容是可能的

如果
$players
是实现的类的对象,那么
($players)
相当于调用方法
$players->
`

此外,如果类也实现了,您可以像访问数组一样访问它。也就是说,
$players[$x]
将等同于
$players->
($x)
。该方法的实现可以做任何事情,包括在每次调用时返回不同的值


尝试以下操作,看看它是否确实是某个自定义类:

echo get_class($players);
还可以尝试以下操作:

var_dump($players);
你可以改天再讨论
print\u r
vs
var\u dump
的优点


新答案 你说:


$players是一个数组,$players[$x]是一个字符串,两者均为预期值。但是,var_dump返回“string(57)Amie”。字符串(57)是我得到的意外代码的长度

如果返回代码,则将
$players[$x]
放置在属性值内。我们在渲染输出中发现的值的内部是:
Amie
。这似乎就是你从
$players[$x]
中得到的

如果我输入代码:

<?php var_dump("<td style='width:150px;border:1px solid black;'>Amie</td>");
但如果我说,它是这样写的:

string(57) "<td style='width:150px;border:1px solid black;'>Amie</td>"
字符串(57)“Amie”
这就是那里正在发生的事情。Amie的值实际上是“Amie”
,但在浏览器中看不到。


原始答案 警告:这个答案是错误的,因为有一个错误。无论如何,这个答案解释了所描述的现象可能发生的方式


如果
$players
是一个对象而不是数组,那么您所描述的内容是可能的

如果
$players
是实现的类的对象,那么
($players)
相当于调用方法
$players->
`

此外,如果类也实现了,您可以像访问数组一样访问它。也就是说,
$players[$x]
将等同于
$players->
($x)
。该方法的实现可以做任何事情,包括在每次调用时返回不同的值


尝试以下操作,看看它是否确实是某个自定义类:

echo get_class($players);
还可以尝试以下操作:

var_dump($players);
你可以改天再讨论
print\u r
vs
var\u dump
的优点


新答案 你说:


$players是一个数组,$players[$x]是一个字符串,两者均为预期值。但是,var_dump返回“string(57)Amie”。字符串(57)是我得到的意外代码的长度

如果返回代码,则将
$players[$x]
放置在属性值内。我们在渲染输出中发现的值的内部是:
Amie
。这似乎就是你从
$players[$x]
中得到的

如果我输入代码:

<?php var_dump("<td style='width:150px;border:1px solid black;'>Amie</td>");
但如果我说,它是这样写的:

string(57) "<td style='width:150px;border:1px solid black;'>Amie</td>"
字符串(57)“Amie”

这就是那里正在发生的事情。Amie的值实际上是
“Amie”
,但您在浏览器中看不到。

$players[$x]
的值是
Amie
,这就是要打印的内容。第二个
$players[$x]
位于标签标签内,您可能没有注意到

您可能尝试在浏览器上打印
$player[$x]
,这就是为什么您没有看到它周围的
td
标记。请检查浏览器输出的来源,并查看其中的内容


而且
Amie
的长度正好是57个字符;与您的打印输出相匹配。

$players[$x]
的值是
Amie
,这就是要打印的内容。第二个
$players[$x]
位于标签标签内,您可能没有注意到

您可能尝试在浏览器上打印
$player[$x]
,这就是为什么您没有看到它周围的
td
标记。请检查浏览器输出的来源,并查看其中的内容


而且
Amie
的长度正好是57个字符;与您的打印输出匹配。

在循环之前尝试打印players变量,它会显示预期值。您可以发布打印的值吗?您的代码看起来很好。echo($players[$x])打印“Amie”no。请这样做。。提供打印(玩家);在循环之前尝试打印players变量,它会显示预期的值。你能发布打印的值吗..你的代码看起来不错..echo($players[$x])打印“Amie”no..像这样做。。提供打印(玩家)$players是一个数组,$players[$x]是一个字符串,两者均为预期值。但是,var_dump返回“string(57)Amie”。String(57)是我得到的意外代码的长度。我使用的是jquery mobile,因此echo()语句中的代码与输出不完全相同html@PabloMedinajQueryMobile是客户端,PHP是服务器端,jQueryMobile如何影响PHP?事实并非如此。现在,如果您有一些javascript代码(jquerymobile或非jquerymobile)正在修改页面,那就另当别论了。你需要。对了,懒我,我只是在上厕所