【问题标题】:Assign Array Value to Variable in PHP在 PHP 中为变量分配数组值
【发布时间】:2015-02-03 13:49:48
【问题描述】:

我认为这是一件容易的事,但显然不是。

   $dom = new DOMDocument();
   $dom->loadHTMLFile("myhtml.html");
   $timestamp = $dom->getElementById('timestamp');
   $timestamp = $dom->saveHTML($timestamp);
   $matches_out = array();
   if (preg_match_all('/<div id="timestamp">(.*)<\/div>/', $timestamp, $matches_out)) {
  $timestamp = $matches_out[0];
  }
  echo $timestamp;

我需要从数组中取出值并将其存储在$timestamp 变量中。当我使用print_r() 时,我得到Array ( [0] =&gt;1422936994)。我认为这意味着要获得我的时间戳,我只需执行$matches_out[0],因为我可以在零索引上看到它,或者我错过了什么。

试图回应它让我知道:Notice: Array to string conversion in C:\xampp\htdocs\myscript.php on line 10

【问题讨论】:

  • 我不太明白这个问题,但是是的,$timestamps 现在是数组,当你做 echo 时,它会显示错误
  • 但我认为您可以使用索引号从数组中获取字符串,请参见此处:stackoverflow.com/a/16876209
  • 如果您查看 preg_match_all() 文档,您会发现 $matches_out 是根据标志排序的多维数组中所有匹配项的数组。所以请不要指望 $matches_out[0] 现在是字符串
  • 我不明白你为什么还要使用preg_match_all。为什么不使用DOMDocument object 方法?例如getElementsByTagName 方法。

标签: php arrays


【解决方案1】:

$matches_out 是多维数组。所以你的正确代码类似于$matches_out[0][0]。请再次检查您的数组以确保您获得正确的值。

preg_match_all

【讨论】:

  • 如何将此值存储在变量中,不仅用于回显,还用于执行数学运算?
  • 请使用 $var_name = $matches_out[0][0];
【解决方案2】:

$timestamp 是一个数组。 所以不是

echo $timestamp;

echo $timestamp[0];

如果您不想拥有索引,请再说一次:

$newTimestamp = $timestamp[0];
echo $newTimestamp;

【讨论】:

    【解决方案3】:

    你调用了错误的项目,时间戳变量已经变成了一个数组 像这样称呼它

    $timestamp[0]
    

    【讨论】:

    • 有没有办法将 $timestamp[0] 分配给实际变量,这样我就可以避免使用索引号...?或者,如果我想说,我必须对时间戳执行数学运算吗,$myResult = $timestamp[0] - 100;,因为上面只是让我得到-100
    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2023-03-04
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多