【问题标题】:Notice: Array to string conversion when with two arrays注意:使用两个数组时数组到字符串的转换
【发布时间】:2015-10-08 10:10:21
【问题描述】:

我试图从视频数据库中获取链接,视频从具有可点击锚标记的搜索表单中显示,源保存在“链接”下的数据库中。我可以显示视频,但在数据库中显示该视频的链接时出现问题。这是代码

<?php

    $names = array();
    $link = array();

    if(isset($_POST['searchterm'])) {
        mysql_connect("localhost", "root", "Oliver");
        mysql_select_db("videos");

        $search = mysql_real_escape_string(trim($_POST['searchterm']));

        $find_videos = mysql_query("SELECT * FROM `videos` WHERE `keywords` LIKE'%$search%'");
        while ($row = mysql_fetch_assoc($find_videos)) {
            $names[] = $row['name'];
            $link[] = $row['link'];
        }

    }

    include('session.php');

?>
<!DOCTYPE html>
<html>
  <head>
  <link href="http://vjs.zencdn.net/4.12/video-js.css" rel="stylesheet">
  <link rel="icon" type="image/ico" href="images/favicon.ico">
<script src="http://vjs.zencdn.net/4.12/video.js"></script>
<link href="http://vjs.zencdn.net/4.12/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/4.12/video.js"></script>
<style type="text/css">
  .vjs-default-skin .vjs-control-bar { font-size: 125% }
</style>
    <meta charset="utf-8">
    <title>Network TV | search</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/bootstrap.css" />
    <link href="css/font-awesome.css" rel="stylesheet" />
    <link href="css/3.1.1/animate.css" rel="stylesheet" />
    <link rel="stylesheet" href="css/styles.css" />
  </head>
  <body style="overflow-x: hidden">
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Network TV</a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class=""><a href="\1\index.php">Home</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
        <section style="padding-top:100px; width:100%"class="container-fluid" id="section2">
                    <h1 class="text-center" style="color:white">Network TV</h1>
                <h3 class="text-center" style="color:white"><u>Search results</u></h3>



                                        <table align="center" class="table" style="color: white; width:50%">
                                                <thead>
                                                    <tr>
                                                        <th>Movie name</th>
                                                    </tr>
                                                </thead>
                                                <tbody>
                                                    <tr>
                                                        <?php
                                                            foreach($names as $name) {
                                                                echo '<tr>
                                                                    <td>' . $name . '</td>
                                                                    <td><a href="' .$link. '"><strong><h6><u>Watch!</u></h6></strong></a></td>
                                                                </tr>';
                                                            }
                                                            ?>
                                                    </tr>
                                                </tbody>
                                            </table>
        </section>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>

    <script src="js/scripts.js"></script>
</html>

更新 完全错误:

注意:第 79 行 C:\xampp\htdocs\1\search.php 中的数组到字符串转换

非常感谢任何帮助。

【问题讨论】:

  • 是哪一行抛出通知?
  • 79 对不起,我忘了提
  • 由于这里没有行号,请您按代码行参考。
  • CTRL + F '
    观看!
    ' 那就是有问题的代码
  • $link 是数组吗?然后尝试将其更改为
    Watch!
    a>

标签: php html mysql arrays


【解决方案1】:

尝试以这种方式更改 for 循环,

<?php

    $i=0;    
    foreach($names as $name) {
        echo '<tr>
            <td>' . $name . '</td>
            <td><a href="' .$link[$i]. '"><strong><h6><u>Watch!</u></h6></strong></a></td></tr>';
        $i++;
    }

?>

【讨论】:

    【解决方案2】:

    我认为您忘记了 $link var 是一个数组,您在其中保存了视频链接,这就是您收到该错误的原因。

    因此,为避免这种情况,您可以使用for 循环每次获取视频的名称和链接,如下所示:

    for($i = 0; $i < count($names); $i++)
    {
        echo '<tr>'
                .'<td>' . $names[$i] . '</td>'
                .'<td><a href="' . $links[$i] . '"> Watch! </a></td>'
            .'</tr>';
    }
    

    或者您可以只使用一个数组来保存数据,如下所示:

    // ...
    
    while ($row = mysql_fetch_assoc($find_videos)) {
        $videos[] = ['name' => $row['name'], 'link' => $row['link']];
        // if you don't want to use indexes, you can simply do :
        // $videos[] = [$row['name'], $row['link']];
    }
    

    然后

    foreach ($videos as $video) {
        echo '<tr>'
                .'<td>' . $video['name'] . '</td>'
                .'<td><a href="' . $video['link'] . '"> Watch! </a></td>'
            .'</tr>';   
    }
    

    希望能有所帮助。

    【讨论】:

    • 对不起,我超级困惑,你能把这一段代码写成一个整体吗?请
    【解决方案3】:

    这将解决问题:

    for($i=0; $i<count($link); $i++){
        echo '<tr><td>' . $name[$i] . '</td><td><a href="' .$link[$i]. '"><strong><h6><u>Watch!</u></h6></strong></a></td> </tr>';
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 2016-08-29
      • 2017-08-11
      • 2013-04-18
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 2013-11-03
      相关资源
      最近更新 更多