foreach中的输出数组

时间:2014-08-12 11:35:44

标签: php arrays foreach

我在这里疯了。

$val = array(2,3,4,8);

$names = array();
$q = mysql_query("SELECT x FROM y WHERE id IN (".implode(",",$val).")");
while($row = mysql_fetch_array($q)) {
  $names[$row['id']] = $row['tName'];
}

以上工作正常。 下面我将创建一个foreach循环:

foreach($val as $values) {
  print $names[$values]."<br>";
}

上面只输出一个结果,即使$ val = array(1,2,3,4);

的print_r($名);返回foreach之前,之后和之后的所有数据。

我在这里错过了什么吗?

编辑:

print_r的结果:

Array ( [2] => textA [3] => textB [4] => textC [8] => textD ) 

4 个答案:

答案 0 :(得分:1)

解决方案1 ​​

foreach($names as $key=>$val)
{
     echo $val."<br/>";
}

解决方案2

foreach($names as $key=>$val)
{
     echo $names[$key]."<br/>";
}

答案 1 :(得分:0)

我认为foreach循环应该是这样的

foreach($names as $key=>$name)
{  
     echo $name."<br>";
}

OR

foreach($names as $name)
{  
     echo $name['id']."<br>";
}

这将输出所有结果

答案 2 :(得分:0)

我也来自这种情况,这对我有用,也希望你:

   $val = array(1,2,3,4);
   $names[] = array();//add this declaration
   foreach($val as $values){
       print $names[$values];
   }

谢谢

答案 3 :(得分:0)

在我的才华中,我创建了这样的$ val数组:

$val = $_GET['val'];
$val = str_replace("[","",$val);
$val = str_replace("]","",$val);
$val = str_replace("\"","",$val);
$val = explode(",",$val);

$ _GET ['val']数据是jquery生成的([“1”,“2”,“3”,“4”])。

这就是问题所在。解决方案是使用json_decode:

json_decode($_GET['val'])

我很抱歉没有看到(并提到它)