PHP - 将带前缀的变量放入数组中

时间:2016-11-28 21:38:40

标签: php arrays

有没有办法将变量放入数组?我不确定如何解释它。

我正在开发一个与游戏服务器配合使用的网站。 游戏导出包含变量的文件,例如:

$RL_PlayerScore_CurrentTrail_14911 = "lasergold";
$RL_PlayerScore_HasTrail_14911_LaserGold = 1;
$RL_PlayerScore_Money_14911 = 2148;

我想将这些转换为像

这样的数组
$data = array(
'CurrentTrail_14911' => 'lasergold'
'HasTrail_14911_LaserGold' => '1'
'Money_14911' => '2184'
);

有什么方法可以做到这一点吗? 提前致谢

3 个答案:

答案 0 :(得分:1)

在范围中包含文件,然后获取已定义变量的数组,不包括您不需要的全局变量。

include('name-of-your-file.php');

$data = get_defined_vars();
$data = array_diff_key($data, array(
  'GLOBALS' => 1, 
  '_FILES' => 1, 
  '_COOKIE' => 1, 
  '_POST' => 1, 
  '_GET' => 1, 
  '_SERVER' => 1, 
  '_ENV' => 1, 
  'ignore' => 1 )
);

答案 1 :(得分:0)

你可以return an array with all your declared variables,然后循环切断所需的文字。你可以这样做:

<?php
//echo your generated file here;
$generatedVars = get_defined_vars();
$convertedArray = array();
foreach($generatedVars as $key=>$var)
{
  $key = str_replace("RL_PlayerScore_","",$key);
  $convertedArray[$key] = $var;
}

答案 2 :(得分:-1)

如果所有游戏变量将以'RL_PlayerScore_'开头,您可以使用类似的内容:

$vars = [];

foreach($GLOBALS as $var => $value) {
    if(strpos($var, 'RL_PlayerScore_') === 0) {
        $vars[$var] = $value;
    }
}

$vars将由您的所有变量填充。

请参阅@Dagon评论。