【问题标题】:can't echo the array: only able to print it: and only echo the specific array无法回显数组:只能打印:并且只能回显特定数组
【发布时间】:2015-02-24 09:00:04
【问题描述】:
<?php 
foreach ($recorded as $rows ) 
    {
        echo "<pre>";
        print_r ($rows); 
        echo "</pre>";

        echo "<img src='".base_url()."upload/thumbs/".$rows->file_name."'/>";
    } 
?>

当我打印 $rows 时,结果是:

Array
(
    [0] => stdClass Object
        (
            [file_name] => steve-big.jpg
        )

    [1] => stdClass Object
        (
            [file_name] => steve1-big.jpg
        )

    [2] => stdClass Object
        (
            [file_name] => steve2-big.jpg
        )

    [3] => stdClass Object
        (
            [file_name] => steve3-big.jpg
        )

)

Array
(
    [0] => stdClass Object
        (
            [file_name] => size-5-5-width-m.jpg
        )

    [1] => stdClass Object
        (
            [file_name] => 3316783.jpg
        )

    [2] => stdClass Object
        (
            [file_name] => 3316786.jpg
        )

    [3] => stdClass Object
        (
            [file_name] => 3316792.jpg
        )

)

但是为什么我不能回显呢?

我正在使用 codeIgniter,这是我收到的错误消息:

遇到 PHP 错误 |严重性:通知 |消息:试图获取非对象的属性 |文件名:views/mothershop.php |行号:17

但是,如果我给它一个特定的数字,我只能回应它:$rows[0]-&gt;file_name$rows[1],等等。

请帮忙,这真的让我很困惑。

【问题讨论】:

  • 你的问题是什么?
  • 我的问题是如何正确回显所有文件名。
  • 你为什么不这样做:foreach ($recorded as $rows) array_walk($rows, function($v){ echo "&lt;img src='" . base_url() . "upload/thumbs/" . $v-&gt;file_name . "'/&gt;"; });
  • @klaudia 你的问题就是答案。只需将 $rows[0]->file_name 替换为 $rows[0]->file_name
  • @Rizier123 ^这就是我想要的。

标签: php arrays codeigniter


【解决方案1】:

这应该适合你:

foreach ($recorded as $rows) 
    array_walk($rows, function($v){
        echo "<img src='" . base_url() . "upload/thumbs/" . $v->file_name . "'/>";
    });

【讨论】:

    【解决方案2】:

    我们可以看到$rows 再次包含数组。所以你不能不echo它。相反,您必须使用 print_r,toecho 您必须迭代 $row 数组。试试下面的代码。

    <?php 
    foreach ($recorded as $rows ) 
        {
            // echo "<pre>";
            // print_r ($rows); 
            // echo "</pre>";
            foreach ($rows as $r) 
            {
                echo "<img src='".base_url()."upload/thumbs/".$r->file_name."'/>";
            } 
         }
    ?>
    

    这可能会对你有所帮助。

    【讨论】:

    • 行得通! :) 但它不干净,因为我必须在那里有双 foreach。有没有最干净的方法来实现这一目标?
    • 看,你有一个数组,其中第 0 个索引处又有数组,第 1 个索引处又有一个数组......所以它需要迭代数组。
    • @klaudia 最后总会有循环,但你可以使用 array_walk 或类似的东西
    • 让我改进我的答案
    • 您更新的答案无效。我已经试过很多次了。
    【解决方案3】:

    试试

    <?php 
    foreach ($recorded as $rows=>$val ) 
        {
           echo $val['file_name'].'<br/>';
        } 
    ?>
    

    【讨论】:

    • 您好,谢谢。但是我已经尝试过了,但这不起作用。
    【解决方案4】:

    检查错误:

    A PHP Error was encountered | Severity: Notice | Message: Trying to get property of non-object | Filename: views/mothershop.php | Line Number: 17
    

    因为$rows 是一个数组并且没有名为file_name 的属性。

    【讨论】:

    • 但是我可以像这样$rows[0]-&gt;file_name
    【解决方案5】:

    试试这个代码

    <?php 
    foreach ($recorded as $rows ) 
        {
            echo "<img src='".base_url()."upload/thumbs".$rows['file_name']."'/>";
        } 
    ?>
    

    【讨论】:

      【解决方案6】:

      尝试在行上再次重申 因为结果的数组结构是二维数组

      foreach ($recorded as $rows ) {
      
          foreach ($rows as $key => $value) {
              echo "<img src='".base_url()."upload/thumbs/".$value->file_name."'/>";  
          }
      
      }
      

      【讨论】:

      【解决方案7】:

      试试这个:

      $baseUrl = base_url();
      foreach ($recorded as &$rows) {
          foreach ($rows as &$row) {
              echo '<img src="'.$baseUrl.'upload/thumbs/'.$row->file_name.'"/>';
          } 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        相关资源
        最近更新 更多