创建一个接受参数并传递变量的函数



我正在创建一个脚本,该脚本将定位文本文件中的字段并获取所需的值。

首先使用file()函数将我的txt逐行加载到数组中。然后,我使用explode()为选定行上的字符串创建一个数组。我为数组分配标签来描述$Key和$Value。

$line = file($myFile);
$arg = 3
$c = explode(" ", $line[$arg]);
$key = strtolower($c[0]);
if (strpos($c[2], '~') !== false) {
$val = str_replace('~', '.', $c[2]);
}else{
$val = $c[2];
}

这很好,但对于我想从txt文件中获得的所有内容,都需要一次又一次地执行大量代码。所以我想创建一个函数,我可以用一个参数来调用它,该参数将返回$key和$val的值。这就是我失败的地方:

<?php
/**
* @author Jason Moore
* @copyright 2014
*/
global $line;
$key = '';
$val = '';
$myFile = "player.txt";
$line = file($myFile); //file in to an array
$arg = 3;
$Character_Name = 3
function get_plr_data2($arg){
global $key;
global $val;
$c = explode(" ", $line[$arg]);
$key = strtolower($c[0]);
if (strpos($c[2], '~') !== false) {
$val = str_replace('~', '.', $c[2]);
}else{
$val = $c[2];
}
return;
}
get_plr_data2($Character_Name);
echo "This character's ",$key,' is ',$val;
?>

我想我已经涵盖了在main中设置值,然后在函数中设置全局值的范围。我觉得我很接近,但我只是错过了一些东西。我觉得应该有return $key,$val;这样的东西,但那不起作用。我可以返回一个数组,但最终我会在数组中的信息中键入同样多的代码。

函数和的函数参数缺少一些内容。我想传递和参数示例:get_plr_data2($Character_Name);,参数标识我们从中获取数据的行。

如有任何帮助,我们将不胜感激。

::更新::

多亏了这些答案,我通过了阵法。

但我的问题是,根据我在get_plr_data2($arg)中输入的参数,值的数量不同。

我想我可以设置我可以得到的num个值的最大值,但这根本不起作用,因为我最终得到了未定义的偏移。

$a = $cdata[0];$b = $cdata[1];$c = $cdata[2];
$d = $cdata[3];$e = $cdata[4];$f = $cdata[5];
$g = $cdata[6];$h = $cdata[7];$i = $cdata[8];
$j = $cdata[9];$k = $cdata[10];$l = $cdata[11];
return array($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l);

现在我想我可以使用计数函数myCount = count($c);来修改或添加更多的值,从而创建我需要的偏移量。或者,一个更好的选择是,如果有一种方法,我可以生成返回数组(),这样它就可以为数组指定值的数量,并返回所需的所有值。我想也许我只是让这件事变得比实际困难得多

再次感谢的所有帮助和建议

function get_plr_data2($arg){
$myFile = "player.txt";
$line = file($myFile); //file in to an array
$c = explode(" ", $line[$arg]);
$key = strtolower($c[0]);
if (strpos($c[2], '~') !== false) {
$val = str_replace('~', '.', $c[2]);
}else{
$val = $c[2];
}
return array($key,$val);
}

使用:

list($key,$val) = get_plr_data2(SOME_ARG);

您可以通过双向实现这一点

  1. 您可以在数组中返回两个值

    function get_plr_data2($arg){ /* do what you have to do */ $output=array(); $output['key'] =$key; $output['value']= $value;
    return $output; }

    并在您的主要功能中使用阵列

  2. 你可以使用参考,这样你就可以返回多个值

    function get_plr_data2($arg,&$key,&$val){ /* do job */
    } //use the function as $key=''; $val=''; get_plr_data2($arg,$key,$val);

    无论你在函数中对$key做了什么,它都会影响主要函数$key

我想得太多了。感谢他们的帮助。多亏了你的指导,我终于想出了这个:

<?php
$ch_file = "Thor";
$ch_name = 3;
$ch_lvl = 4;
$ch_clss = 15;

list($a,$b)= get_char($ch_file,$ch_name);//
Echo $a,': ',$b; // Out Puts values from the $cdata array.
function get_char($file,$data){
$myFile = $file.".txt";
$line = file($myFile);
$cdata =  preg_split('/s+/', trim($line[$data]));
return $cdata;
}

这个社区是全新的,感谢大家的耐心。

相关内容

  • 没有找到相关文章

最新更新