web-dev-qa-db-ja.com

注意:PHPでの配列から文字列への変換

<?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>

$ info配列をエコーすると正常に機能しますが、$ player配列または$ pl_1変数または$ result配列の値をエコーすると、配列が文字列に変換され、o/pが表示されません。どうして?

5
HungryDB

最初に$player[] = array();$player = array();に置き換えてみてください(2行目)。

これは、[]のために配列であると通知されるこの変数のインデックス0で配列を宣言するためです。したがって、配列を配列に配置して、多次元にします。

10

単に配列をechoすることはできません。 echostringsしか出力できません。 _echo 'foo'_は単純で、文字列を出力します。 echo array('foo' => 'bar')の場合、echoは正確に何をすることになっていますか? echoがここに何かを出力するために、PHPはarray('foo' => 'bar')を文字列に変換します。これは常に文字列_"Array"_です。 PHPこれはおそらくあなたが望むものではないことを知っているので、それについて通知します。

問題は、配列を文字列のように扱うことです。修正してください。

9
deceze