PHP保持显示“数组”而不是[字符串]

时间:2013-04-08 15:39:15

标签: php html mysql text-formatting

我正在尝试进行一些文本格式化并在一大块代码中查询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>

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

我在哪里错了?

3 个答案:

答案 0 :(得分:1)

你的下面一行:

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

将其更改为数组。 Explode基本上采用一个字符串并将其转换为一个数组,用你指定的字符分割它(在这种情况下&#39;:&#39;)。

您需要执行以下操作:

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

我怀疑你在&#34;之后使用explode获取类别名称:&#34;。所以也许这会更好:

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

答案 1 :(得分:0)

php function explode返回一个数组 将
var_dump($labelCPU);
爆炸声明后。它将转储$labelCPU中存储的所有数据。然后找到包含所需数据的元素

答案 2 :(得分:0)

如果您没有使用数字键,请关闭mysql_fetch_assoc,您也只是错过了爆炸内容的索引(我添加了评论)。

请注意,不推荐使用mysql_fetch_assoc / array来支持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>
祝你好运!