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

Posted

技术标签:

【中文标题】注意:php中数组到字符串的转换【英文标题】:notice: array to string conversion in php 【发布时间】:2013-11-03 02:41:50 【问题描述】:
<?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 不显示。 为什么?

【问题讨论】:

因为两者都是数组而不是字符串。而不是echo 使用 print_r($player[0]);和 print_r($pl_1);查看数组。 您可以在任何变量上使用var_dump 来查看变量类型及其内容,以便通过您的代码更好地了解您的变量分配。 Reference - What does this error mean in PHP?的可能重复 【参考方案1】:

尝试在开头(第 2 行)将 $player[] = array(); 替换为 $player = array();

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

【讨论】:

【参考方案2】:

你不能简单地echo 一个数组。 echo 只能输出字符串echo 'foo' 很简单,它输出一个字符串。在echo array('foo' =&gt; 'bar') 的情况下,echo 应该做什么?为了让echo 在此处输出任何内容,PHP 会将array('foo' =&gt; 'bar') 转换为字符串,该字符串始终为字符串"Array"。因为 PHP 知道这可能不是你想要的,所以它会通知你。

问题是您试图将数组视为字符串。修复它。

【讨论】:

不只是简单地回显一个数组。

以上是关于注意:php中数组到字符串的转换的主要内容,如果未能解决你的问题,请参考以下文章

PHP表单返回注意事项:数组到字符串的转换

注意:数组到字符串的转换

注意:带日期的数组到字符串转换

PHP使用自定义键将字符串数组转换为二维数组

php字符串处理

Laravel Fortify,Vuex。数组到字符串的转换错误。 FortifyServiceProvider.php 第 40 行。发生了啥事?