注意:php中的数组转换为字符串

Hun*_*yDB 5 php mysql arrays pdo

<?php       
 $player[] = array();
    $team_id = $_SESSION['tid'];

    $team_pids = $con->prepare("SELECT p_id FROM players_to_team WHERE t_id = ?");

    $team_pids->bindParam(1,$team_id);

    $team_pids->execute();

    while($info = $team_pids->fetch(PDO::FETCH_ASSOC))
    {
            $player[] = $info['p_id'];
            echo $info['p_id'];
    }
    $pl_1 = $player[0];
    .
        .
        .
    $pl_10 = $player[9];

    echo $player[0]; //notice here
    echo $pl_1;      //notice here
?>
<table>

$query = $con->prepare("SELECT role,name,value FROM players WHERE p_id = '".$pl_1."'");
// notice here
               $query->execute();

               while($result = $query->fetch(PDO::FETCH_ASSOC))
               {
                     echo "<tr>";  
                     echo "<td>".$result['role']."</td>";
                     echo "<td>".$result['name']."</td>";
                     echo "<td>".$result['value']."</td>";
            }
?>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

当我回显$ info数组它工作正常,但当我回显$ player数组或$ pl_1变量或$结果数组值注意出现...数组到字符串转换和o/p不显示.为什么?

Gui*_*ier 10

尝试更换 $player[] = array();通过 $player = array();在开始时(第2行).

这是因为你在这个变量的索引0处声明了一个数组,因为它被告知是一个数组[].因此,您尝试在数组中放置一个数组,使其成为多维数组.


dec*_*eze 8

你不能只是echo一个数组.echo只能输出字符串.echo 'foo'很简单,它输出一个字符串.什么是echo应该在的情况下做的正是echo array('foo' => 'bar')?为了在echo这里输出任何东西,PHP将转换array('foo' => 'bar')为字符串,它始终是字符串"Array".而且因为PHP知道这可能不是你想要的,它会通知你.

问题是你正在尝试将数组视为字符串.修复它.

  • 一个不是简单地回应一个数组. (9认同)