PHP一直显示"array"而不是[string]


PHP Keeps Displaying "array" instead of [string]

我试图做一点文本格式化和查询SQL都在一大块代码。以前,它在没有格式化的情况下也能很好地完成清单,但是为了用户的可读性,我需要用空格替换下划线,并删除每个字符串前面的类别。

<?php
 //doing the query
    $query = "SELECT * FROM parts WHERE itemName LIKE 'Processors:%'";
    $result = mysql_query($query) or die("Unable to query parts table!");
    while($row=mysql_fetch_array($result)) {
 //explode removes the preceding category, str_replace obviously replaces the _
        $labelCPU = explode(':',str_replace('_',' ',$row['itemName']));
 //displays the option in HTML
        $aa .= "<option value='{$row['partID']}'>$labelCPU</option>";
        }
?>
<select name="cpu"><? echo $aa; ?></select>

当它回显列表中的变量时,我可以告诉查询仍然执行良好,因为我得到了适当数量的选项,但它们都显示为"Array"。

我哪里错了?

下面一行:

$labelCPU = explode(':',str_replace('_',' ',$row['itemName']));

正在将其更改为数组。explosion基本上接受一个字符串,并将其转换为一个数组,按您指定的字符(在本例中为':')将其分割。

你需要这样做:

for ($i=0; $i<count($labelCPU); $i++) {
    $aa .= "<option value='{$row['partID']}'>$labelCPU[$i]</option>";
}

我怀疑你正在使用爆炸来获得":"之后的类别名称。因此,也许这样做会更好:

    $aa .= "<option value='{$row['partID']}'>$labelCPU[1]</option>";

php函数explode返回一个数组
地方
var_dump($labelCPU);
After explosion语句。它将转储存储在$labelCPU中的所有数据。然后找到包含所需数据的元素

切换到mysql_fetch_assoc,如果你不使用数字键,你也只是错过了一个索引,你已经爆炸(我添加了一个评论)。

请注意,mysql_fetch_assoc/数组已被弃用,而支持PDO。如果你担心寿命的话,可能要考虑换掉了。

<?php
$query  = "SELECT * FROM parts WHERE itemName LIKE 'Processors:%'";
$result = mysql_query($query) or die("Unable to query parts table!");
$aa     = "";
while($row = mysql_fetch_assoc( $result ) ) 
{
    $labelCPU = explode(':',str_replace('_',' ',$row['itemName']));
    $labelCPU = $labelCPU[1]; // this is what you're missing
    $aa .= "<option value='{$row['partID']}'>$labelCPU</option>";
}
?>
<select name="cpu"><? echo $aa; ?></select>

祝你好运!