【问题标题】:how to use global multidimensional arrays in PHP?如何在 PHP 中使用全局多维数组?
【发布时间】:2021-05-15 14:16:15
【问题描述】:

我尝试在 PHP 中使用多维全局数组。不幸的是,到目前为止我不知道该怎么做......

   global $datawords;

function unfold_sentence($str)
{
    $sentence_arr = preg_split('/[.?!]/',$str); 
    $i=0;
    foreach ($sentence_arr as $value) {
            $i++;
            $datawords['sentence'][$i]['sentence'] = $value;
            $datawords['sentence'][$i]['words'] = preg_split( '/[-?!.,;: ]+/', $value);
    }
}

unfold_sentence("hello! how are you?");
print_r($datawords['sentence'][1]['sentence']); //empty echo

我尝试使用 $GLOBALS - 而不是 $datawords - 不成功。

【问题讨论】:

  • 你永远不会调用unfold_sentence,所以代码不会执行。
  • 对不起,这只是一段选定的代码,当然是指一个函数。我变了。
  • 你在哪里初始化$i
  • 我修好了,但这并不能解决数组不工作的问题...
  • 当然,这就是我将其作为评论发布的原因;不作为答案。重要的是,您的问题的代码可以重现您所询问的问题,而不是其他错误。我现在已经发布了答案。

标签: php multidimensional-array


【解决方案1】:

global 是一个关键字,您将在要引用全局变量的函数中使用它。 PHP documentation 给出了使用 global 关键字的示例,并指出:

通过在函数内声明$a$b 全局,对任一变量的所有引用都将引用全局版本。

请注意,$i 可以由 foreach 循环本身生成。

应该是这样的:

function unfold_sentence($str)
{
    global $datawords;

    $sentence_arr = preg_split('/[.?!]/',$str); 
    foreach ($sentence_arr as $i => $value) {
        $datawords['sentence'][$i]['sentence'] = $value;
        $datawords['sentence'][$i]['words'] = preg_split( '/[-?!.,;: ]+/', $value);
    }
}

【讨论】:

  • 非常感谢!现在一切都清楚了。
猜你喜欢
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
相关资源
最近更新 更多