2017-05-27 8 views
1

私はこの配列を含むファイルを持っている:別のファイルの配列から値を削除しますか?

stafflist.php:

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

しかし、私は「別のファイル(remove.php) からその配列から値を削除しようとしています配列からインデックスを取得する関数を作成してから、ちょうどunset(array['id'])を使ってすべてを試しましたが、何も問題はありません。

は、ここに私の最も最近の試みである:(remove.php内)

function removeFromArray($steamid, &$array) { 
    $index = array_search($steamid, $array); 
    if($index !== false) { 
    unset($array[$index]); 
    } 
    return $array; 
} 

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

申し訳ありませんが、これは本当に簡単な質問であれば、私はこの時点で終了に時間しようとしてきました。

+0

'$ _GET [ 'steamid']'配列の値またはキーである:ここでは

は私の最も最近の試みでありますか?なぜ配列を繰り返して、値が '$ steamid'と等しいかどうかをチェックしてそれを削除するのはなぜですか? – MasterOdin

+0

配列に 'array_filter()'を使うだけです:https:// 3v4l($ array = $ value) .org/PIWYj本当に簡単なことをするためには、実際に関数は必要ありません。また、 '$ roster'をチェックして、あなたが望むものを持っているかどうかを確認し、サーバのユーザなどとそのファイルに書き込むことによって、エラー報告をオンにしてデバッグします。 –

+0

また、閉じる必要はありません。 '?>' PHPタグ。 –

答えて

0

使用関数が配列にそのキーを検索した値とarray_key_existsを返すために、それを行うために間違った方法:

stafflist.php:

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

しかし、私はから値を削除しようとしています(array ['id'])を使って、配列からインデックスを取得する関数を作ってみたが、何も動いていない。 (remove.php内側)

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) . ';'); 
} 
+0

ファイルから返される関数よりも関数が優れているのはなぜですか? –

+0

ファイルがiniファイルなどの場合は問題ありません。最悪の場合、配列に格納されている変数のみが大丈夫です。しかし、配列に戻り値を入れて、真剣に私のために狂っているfile_get_contentsをしてください。 – calexandre

+0

これは完璧です。これは 'var_export()'が動作する方法です。その周りに関数をラップするだけで、不必要な複雑さが追加されます(関数を呼び出す必要があります)。それは傷つくことはありませんが、それは必要ではないし、OPの問題(私が想像する)を解決しません。 –

関連する問題