我在数据库中显示一行时遇到问题,该数据库有一个技能列表作为数组,用逗号分隔。带有解释的完全注释的代码是我迄今为止所做的。非常感谢所有帮助。提前谢谢。
// DB Connection here
// Execute Query
$sql = "SELECT id, skills FROM p_info";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
// Delimit array by comma
$myArray = explode(',', $row['skills']);
// Store as array
$myArr = array($myArray);
/**
Assume the value of is skills row in the database is: type 1, type 2, type 3, type 4
i would like to show these values each on a seperate <li> element hence using a loop.
<li> type 1</li>
<li> type 2</li>
<li> type 3</li>
<li> type 4</li>
My guess would be to use foreach loop..but im a little confused how to go about this. Here whats i think logically:
**/
?>
<ul>
<?
foreach ( $myArr as $skills ) {
?>
<li><?=$myArr;?></li>
<?
} // End loop
?>
</ul>
<!-- Can someone tell me what im doing wrong? im fairly new to PHP but im a quick learner. :) -->
答案 0 :(得分:0)
删除$myArr = array($myArray);
并改为foreach ( $myArray as $skills ) {
。
您将数组放在一个新数组中,因此当您尝试遍历它时,最终会得到原始数组。
同时将<?=$myArr;?>
更改为<?=$skills;?>
,您正在循环$myArray
并临时存储$skills
中的每个部分,$myArray
不会改变,因此它无用试图echo
。
答案 1 :(得分:0)
explode
已经返回一个数组。将结果包装成数组会给你这样的结果:
array(array('foo', 'bar', 'baz'))
当循环遍历外部数组时,您当然不会得到内部数组的结果。只需摆脱$myArr = array($myArray)
并使用$myArray
。
答案 2 :(得分:0)
$myArray
已经是一个数组。<li><?php echo $skills; ?>
而不是$myArr
。那是阵列。<?
)使用<?php
代替答案 3 :(得分:0)
无需执行$myArr = array($myArray);
,因为explode()
已经返回数组。
您可以随时在阵列或任何其他变量上执行var_dump($myArray)
以查看其中的内容。