Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的PHP数组不知何故没有';我不认为我的数组是数组_Php - Fatal编程技术网

我的PHP数组不知何故没有';我不认为我的数组是数组

我的PHP数组不知何故没有';我不认为我的数组是数组,php,Php,好的,我把范围缩小到一个关键功能 这似乎不可能,但每次我“回显”它时,这个函数总是说我用来存储数据的变量数组不再是数组 违规代码 private function do_display_message_details() { $m_message_values = ''; $m_address = APP_ROOT_PATH; if ($this->c_arr_stored_message_data) { echo "I AM AN ARRAY"; } e

好的,我把范围缩小到一个关键功能

这似乎不可能,但每次我“回显”它时,这个函数总是说我用来存储数据的变量数组不再是数组

违规代码

private function do_display_message_details()
{
  $m_message_values = '';
  $m_address = APP_ROOT_PATH;

  if ($this->c_arr_stored_message_data)
  {
    echo "I AM AN ARRAY";
  }
  else
  {
    echo "I AM NOT AN ARRAY";
  }


  $m_message_name = $this->c_arr_stored_message_data['message-name'];
  $m_arr_stored_message_data = $this->c_arr_stored_message_data['message-retrieved-data'];

  foreach((array)$m_arr_stored_message_data as $m_message_value)
  {
    $m_message_row = explode(',', $m_message_value);
    $m_message_values .= '<tr>';
    $m_message_values .= '<td>' . $m_message_row[0] . '</td>';
    $m_message_values .= '<td>' . $m_message_row[1] . '</td>';
    $m_message_values .= '<td>' . $m_message_row[2] . '</td>';
    $m_message_values .= '</tr>';
  }

  $this->c_html_page_content = <<< VIEWSTOREDMESSAGEDATA
    <div id="lg-form-container">
      <h2>Message name: $m_message_name</h3>
      <h3>Message Data</h3>
      <table border="1">
        <tbody>
          <tr>
            <th>Date</th>
            <th>Time</th>
            <th>Message Values</th>
          </tr>
          $m_message_values
        </tbody>
      </table>
      <br />

      <form method="post" action="$m_address">
        <label for="anothergo">Another Message?</label>
        <button name="feature" value="display_message_data">Review Stored Message Data</button>
      </form>
    </div>
VIEWSTOREDMESSAGEDATA;
}
但是,如果您在另一个函数上尝试它,它会起作用

有效的试用代码

// ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
    public function set_stored_message_data($p_arr_stored_message_data)
    {
        $this->c_arr_stored_message_data = $p_arr_stored_message_data;
       if ($this->c_arr_stored_message_data)
       {
         echo "I AM AN ARRAY";
       }
       else
       {
         echo "I AM NOT AN ARRAY";
       }
    }
你的“我是一个数组”检查并不像你想象的那样有效:

$x = array();
if ($x) {
    echo 'I AM AN ARRAY';
} else {
    echo 'I AM NOT AN ARRAY';
}
打印出“我不是数组”,如图所示。您可以使用查看变量的确切内容

您有一个名为
$c\u page\u content
的变量,但稍后您将引用
$c\u html\u page\u content
。也许是个错误

如果“消息”可以包含用户提供的文本,则代码中存在XSS漏洞。使用HTML呈现文本非常重要。例如,如果
$m_message_row[0]
是文本,则必须写入
''。htmlspecialchars($m_message_row[0])。'。对于不应包含写入HTML的HTML标记的任何其他值,同上


您的主要问题是,数据显然没有存储在
c\u arr\u storaged\u message\u data
变量中,如果没有看到调用
set\u storaged\u message\u data
do\u display\u message\u details
的连接代码,就无法再现。我只能建议您确保在同一类的同一实例上以正确的顺序调用它们。

什么不起作用?以HTML格式显示结果,或者您是否收到任何错误消息?:-)@ninetwozero在显示屏上。没有错误消息,但没有显示任何内容。如果是一个与问题无关的建议,以一种非自我吸收的方式命名变量和函数,那么每个人都可以更容易地帮助您。@JoelHernandez希望这样容易。对于这项工作,我必须提交匈牙利符号,这意味着“$m”变量是方法变量,$c”变量是类变量;然后“arr”是数组变量,“obj”是对象变量等等。这很烦人,但是规则是你做过任何调试,或者你只是举手说“它不工作了”?谢谢你提供了一些帮助,我已经把它整理好了。这是一个胭脂赋值运算符,基本上我有一个“如果”语句,上面有一个等号,我从来没有仔细考虑过,但当我添加第二个等号时,问题就消失了,我的数据开始显示出来。
$x = array();
if ($x) {
    echo 'I AM AN ARRAY';
} else {
    echo 'I AM NOT AN ARRAY';
}