【问题标题】:PHP Warning: Illegal string offset 'text'PHP 警告:非法字符串偏移 'text'
【发布时间】:2019-07-13 06:56:22
【问题描述】:

我在 PHP 中不断收到以下错误:

[13-Jul-2019 06:49:43 UTC] PHP 警告:非法字符串偏移 'text' 在 /home/catchandreport/public_html/sweettune.info/LikeDislike/index.php 在第 15 行

有什么方法可以用其他东西替换我的字符串?

我还没有尝试过任何东西。虽然我在这里,这是一个完全不同的问题,但在另一行代码中我得到了

非法字符串偏移'id'

我做错了什么可以改变吗?

  <?php echo $post['text']; ?>
  <div class="post-info">
    <!-- if user likes post, style button differently -->
    <i <?php if (userLiked($post['id'])): ?>
          class="fa fa-thumbs-up like-btn"
      <?php else: ?>
          class="fa fa-thumbs-o-up like-btn"
      <?php endif ?>
      data-id="<?php echo $post['id'] ?>"><img src="catlogo.ico"></i>
    <span class="likes"><?php echo getLikes($post['id']); ?></span>

【问题讨论】:

  • $post 的值从何而来?
  • @NigelRen 这就是我与 $posts 相关的所有内容,没有别的了。
  • 您可能会发现您不需要 foreach() 并且可能值得尝试使用您的 $posts 变量 - $posts['text']
  • 你的意思是$_POST

标签: php mysql button


【解决方案1】:

听起来 $post["text"] 的值未在您的数组中设置。

如果您不确定您使用的数组部分/键是否存在,您应该始终先对其进行测试:

$textVar = (isset($post["text"]) ? $post["text"] : "YOUR ALTERNATE VALUE");

甚至可以检查您的数组是否已设置:

$post = (is_array($post) ? $post : array());

如果你不能得到正确的值,那么尝试 var_dump 你的数组来查看类型和内容:

var_dump($post);

希望对你有帮助

【讨论】:

  • 正如@JureW 所提到的,使用“array_key_exists”可能是一个更好的主意,因为如果您的数组值为 NULL,“isset”将返回 FALSE。如果这解决了您的问题,请告诉我们
【解决方案2】:

当变量类型不是数组并且您尝试访问数组键值时,会出现非法字符串偏移警告。

让我举个例子(错误的方式);

$post = ''; // Initialized as empty string
$post['text'] = 'abc'; // It will work but give you illegal offset value

echo $post['text']; // It will work but give you illegal offset value

正确做法示例:

$post = array(); // Initialied as array
$post['text'] = 'abc';  // Now it will not give the illegal offset value

echo $post['text']; // Now it will not give illegal offset value

【讨论】:

    【解决方案3】:

    如果你有非法字符串偏移的问题,首先,正如@SeeQue 已经提到的,

    测试 post 是否是一个数组,而不是测试键,不是它们是否被设置,而是它们是否存在:

                    if(is_array($post)) {
                       if(array_key_exists("text", $post)) {
                        //do something
                      }
                    }
    

    也许这会有所帮助。

    BR

    【讨论】:

      猜你喜欢
      • 2013-04-11
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多