PHP一直显示“数组”而不是[字符串]

Posted

技术标签:

【中文标题】PHP一直显示“数组”而不是[字符串]【英文标题】:PHP Keeps Displaying "array" instead of [string] 【发布时间】:2013-04-08 15:39:14 【问题描述】:

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

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

我哪里错了?

【问题讨论】:

explode() 返回一个数组,您将其分配给$labelCPU。你打算怎么做? 因为你explode() 将返回数组。使用$labelCPU[0]$labelCPU[1]等。 【参考方案1】:

您在下面的行:

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

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

您需要执行以下操作:

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

我怀疑您正在使用 explode 来获取“:”之后的类别名称。所以也许这会更好:

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

如果您不使用数字键,请切换到 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>

祝你好运!

【讨论】:

以上是关于PHP一直显示“数组”而不是[字符串]的主要内容,如果未能解决你的问题,请参考以下文章

C# 结构到字节数组封送产生 19 个元素而不是 20 个

XPATH - 获取返回的单个值而不是数组 php

使用字符串而不是 char 数组时程序崩溃

强制 php 将数字显示为 0.000001 而不是 f 1.0E-6

显示可能的字符串组合

如何使用 Apache fop 显示 Unicode 字符?显示“?”而不是性格。