日期:2014-05-17  浏览次数:20379 次

echo数组问题
<?php
while($row=mysql_fetch_array($result))
{
list($x1,$y1) = explode('|',$row['xyz1']);
list($x2,$y2) = explode('|',$row['xyz2']);
……
$left=array($x1,$x2,……);
$top=array($y1,$y2,……);
}
 $notes.= '<div class="note" style="left:'.$left.'px;top:'.$top.'px"></div>'; 
?>

 <?php echo $notes;?> 

$x1,$x2,$y1,$y2存放的是DIV的TOP,LEFT坐标
但echo出来后只能看到一个DIV 而且并没有取得$left,$top的值

如果我写成
<div class="note" style="left:'.$left[0].'px;top:'.$top[0].'px"></div>'
或者
<div class="note" style="left:'.$left[1].'px;top:'.$top[1].'px"></div>'
则可以正常显示

由于我要echo的DIV很多,所以不可能自己一个一个地列举,请问怎么用单个句子把所有的DIV全部echo出来呢

试过用for判断
for($i=0;$i<100;$i++)
{
echo "
<div class="note" style="left:'.$left['.$i.'].'px;top:'.$top['.$i.'].'px"></div>'
";
}

'.$left['.$i.'].' 不知道正确的表达方式是怎样的

另外
{
list($x1,$y1) = explode('|',$row['xyz1']);
list($x2,$y2) = explode('|',$row['xyz2']);
……
$left=array($x1,$x2,……);
$top=array($y1,$y2,……);
}
这个语句有什么方法可以直接合并为类似于下面这种表达式
list($left,$top)=array(explode('|',$row['xyz1']),explode('|',$row['xyz2']),……)
不然的话也是得自己一个个地列举出来


------解决方案--------------------
看看这个
PHP code
$ar = array (
array(
 'xy1' => '1,2',
 'xy2' => '3,4',
 'xy3' => '5,6',
 'xy4' => '7,8',
),
array(
 'xy1' => '11,12',
 'xy2' => '13,14',
 'xy3' => '15,16',
 'xy4' => '17,18',
),
);

foreach($ar as $r)
  foreach($r as $v)
    list($x[], $y[]) = explode(',', $v);

print_r($x);
print_r($y);

------解决方案--------------------
echo "<div class=\"note" style=\"left:{$left[$i]}px;top:{$top[$i]}px\"></div>"; 

或者:
echo "
<div class='note' style='left:".$left[$i]."px;top:".$top[$i]."px'></div>
";