Php 正在从另一个文件的数组中删除值?

Php 正在从另一个文件的数组中删除值?,php,arrays,Php,Arrays,我有一个包含此数组的文件: stafflist.php: <?php return array ( 2 => '76561198046199189', 1 => '76561198063610282', 3 => '76561198042145797', );?> 很抱歉,如果这是一个非常简单的问题,我在这一点上已经连续尝试了几个小时。错误的做法是,使用函数返回值并将该键搜索到数组中: stafflist.php: <?php function

我有一个包含此数组的文件:

stafflist.php:

<?php return array (
  2 => '76561198046199189',
  1 => '76561198063610282',
  3 => '76561198042145797',
);?>

很抱歉,如果这是一个非常简单的问题,我在这一点上已经连续尝试了几个小时。

错误的做法是,使用函数返回值并将该键搜索到数组中:

stafflist.php:

<?php 
function getArray(){
return array (
  2 => '76561198046199189',
  1 => '76561198063610282',
  3 => '76561198042145797',
);
}
?>

但是我试图从另一个文件(remove.php)中删除该数组中的一个值。我尝试了从数组中获取索引的函数,到仅使用unset(array['id']),但没有任何效果

下面是我最近的一次尝试:(insideremove.php)

include_once/../../../stafflist.php”;
函数removeFromArray($streamid,&$array){
$index=array\u搜索($streamid,$array);
如果($索引){
未设置($array[$index]);
}
//您不需要返回,因为您已经引用了参数作为对用户发送的数组的引用,所以此函数中的所有交互也将转到主数组
}
$LOSTER=getArray();
if(在数组中($获取['streamid',$floster)){
removeFromArray($\u GET['streamid',$floster);

file_put_contents(dirname(_file__)),“错误的方法是,使用函数返回值并将该键搜索到数组中:

stafflist.php:

<?php 
function getArray(){
return array (
  2 => '76561198046199189',
  1 => '76561198063610282',
  3 => '76561198042145797',
);
}
?>

但是我试图从另一个文件(remove.php)中删除该数组中的一个值。我尝试了从数组中获取索引的函数,到仅使用unset(array['id']),但没有任何效果

下面是我最近的一次尝试:(insideremove.php)

include_once/../../../stafflist.php”;
函数removeFromArray($streamid,&$array){
$index=array\u搜索($streamid,$array);
如果($索引){
未设置($array[$index]);
}
//您不需要返回,因为您已经引用了参数作为对用户发送的数组的引用,所以此函数中的所有交互也将转到主数组
}
$LOSTER=getArray();
if(在数组中($获取['streamid',$floster)){
removeFromArray($\u GET['streamid',$floster);

file\u put\u contents(dirname(\u\u file\uu)。“
$\u GET['streamid']
是数组中的值还是键?为什么不直接遍历数组,检查值是否等于
$streamid
并将其删除?
foreach($array as$key=>$value)如果($streamid=$value)未设置($array[$key]);
只需使用
数组过滤器()
在数组上:你实际上不需要一个函数来完成这件非常简单的事情。此外,通过检查
$floster
来打开错误报告并进行调试,以确保它具有你想要的内容,你可以与服务器的用户一起写入该文件,等等。你也不需要也不应该包含关闭
?>
PHP标记。
$\u['streamid']
是数组中的值还是键?为什么不遍历数组并检查值是否等于
$streamid
并将其删除?
foreach($key=>array)if($streamid==$value)unset($array[$key]);
只需使用
array\u filter()
在数组上:你实际上不需要一个函数来完成这件非常简单的事情。另外,通过检查
$floster
来打开错误报告并进行调试,以确保它具有你想要的内容,你可以与服务器的用户一起写入该文件,等等。你也不需要也不应该包含关闭
?>
PHP标记。为什么是func这比从文件返回更好?如果文件是ini文件或类似的文件,这没关系。在最坏的情况下,只有在变量中加载数组也没关系。但是把return放在数组中,文件是否得到内容对我来说真的很疯狂。这很好。
var\u export()
应该是可以工作的。围绕它包装一个函数只会增加不必要的复杂性(然后你必须调用该函数)。这不会造成伤害,但它不是必需的,也不会解决OP的问题(我想)不,这是不必要的,对我来说这是一个最小的封装概念,就像进入一个类一样。我知道这看起来很奇怪,但不需要封装,因为在这种情况下,直到设置了从
require
返回的var之后才分配它;这只会使
include
require
像一个小函数包装器一样为你知道。为什么函数在这里比从文件返回更好?如果文件是ini文件或类似的文件,那没关系。在最坏的情况下,只有加载在变量中的数组也没关系。但是将return放在数组中,并让file_获取内容,这对我来说太疯狂了,说真的。这很好。这就是
var_export()
应该是可以工作的。围绕它包装一个函数只会增加不必要的复杂性(然后你必须调用该函数)。这不会造成伤害,但它不是必需的,也不会解决OP的问题(我想)不,这是不必要的,对我来说这是一个最小的封装概念,就像进入一个类一样。我知道这看起来很奇怪,但不需要封装,因为在这种情况下,直到设置了从
require
返回的var之后才分配它;这只会使
include
require
像一个小函数包装器一样为你。
include_once "/../../../stafflist.php";
function removeFromArray($steamid, &$array) {
  $index = array_search($steamid, $array);
  if($index) {
     unset($array[$index]);
  }
 //you don't need the return because you already referenced the argument as a reference to the array sended by the user, so all your interactions inside this function will go to main array as well
}

$roster = getArray();
if(in_array($_GET['steamid'], $roster)) {
  removeFromArray($_GET['steamid'], $roster);
  file_put_contents(dirname(__FILE__)., '<?php return ' . var_export($roster, true) . ';');
}