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一直显示“数组”而不是[字符串]的主要内容,如果未能解决你的问题,请参考以下文章