Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从内部函数打印二维数组_Php_Arrays_Variables_Multidimensional Array - Fatal编程技术网

Php 从内部函数打印二维数组

Php 从内部函数打印二维数组,php,arrays,variables,multidimensional-array,Php,Arrays,Variables,Multidimensional Array,我试图从一个二维数组中创建一个列表,显示每行中该位置的键和值。这是我写的代码 $array1=array(...); $array2=array(...); (...) $array25=array(...); //this part works fine so I'm not posting all of it $bigarray['array1']=$array1; $bigarray['array2']=$array2; //and so on. This also works as it

我试图从一个二维数组中创建一个列表,显示每行中该位置的键和值。这是我写的代码

$array1=array(...);
$array2=array(...);
(...)
$array25=array(...); //this part works fine so I'm not posting all of it
$bigarray['array1']=$array1;
$bigarray['array2']=$array2;
//and so on. This also works as it should
$matrix=file(mylist.txt); //this file holds all the keys I want to print, with the format key1##key2

function printthelist($array)
{
    global $bigarray,$key1,key2;
    $line=explode("##",$array);
    $key1=$line[0];
    $key2=$line[1];
    echo 'Column:'.$key1.rtrim($key2).$bigarray[$key1][rtrim($key2)].'<br/>';
}

array_walk($matrix,'printthelist');
这是保存要打印的密钥的文件的内容:

other##16
invitro##9
ib##19
invitro##8
other##13
knowmore##14
psico##10
med##23
patients##19
patients##18
other##12
试试这个:

$array1=array(...);
$array2=array(...);
(...)
$array25=array(...); //this part works fine so I'm not posting all of it

global $bigarray;
$bigarray['array1']=$array1;
$bigarray['array2']=$array2;
//and so on. This also works as it should
$matrix=file(mylist.txt); //this file holds all the keys I want to print, with the format key1##key2

function printthelist($value, $key)
{
    global $bigarray;
    list($key1, $key2)=explode("##",$value);
    echo 'Column:'.$key1.rtrim($key2).$bigarray[$key1][$key2].'<br/>';
}

array_walk($matrix,'printthelist');
$array1=数组(…);
$array2=数组(…);
(...)
$array25=数组(…)//这部分工作很好,所以我不会发布所有内容
全球$bigarray;
$bigarray['array1']=$array1;
$bigarray['array2']=$array2;
//等等。这也应该起作用
$matrix=文件(mylist.txt)//此文件包含我要打印的所有键,格式为key1##key2
函数printthelist($value,$key)
{
全球$bigarray;
列表($key1,$key2)=分解(“##,$value”);
echo“Column:”.$key1.rtrim($key2)。$bigarray[$key1][$key2]。
; } 数组_walk($matrix,'printthelist');
我将以递归方式执行此操作-它将适用于二维和二维数组:

function printArray($array)
{
    foreach($array as $key => $val)
    {
        if(is_array($val)
        {
            printArray($val);
        }
        else
        {
            // whatever you want really, using your code as example
            $line=explode("##",$array);
            $key1=$line[0];
            $key2=$line[1];
            echo 'Column:'.$key1.rtrim($key2).$bigarray[$key1][$key2].'<br/>';

        }
    }
}
函数printary($array)
{
foreach($key=>$val的数组)
{
if(is_数组($val)
{
打印阵列($val);
}
其他的
{
//无论您真正想要什么,以您的代码为例
$line=explode(“##,$array”);
$key1=$line[0];
$key2=$line[1];
echo“Column:”.$key1.rtrim($key2)。$bigarray[$key1][$key2]。
; } } }
更新:

请尝试以下代码:

$matrix = file('mylist.txt');

function printthelist($array){
    global $bigarray;

    $line = explode('##', $array);

    $key1 = $line[0];
    $key2 = $line[1];
    echo 'Column: '.$key1.$key2.' : '.$bigarray[$key1][$key2].'<br/>';
}

array_walk($matrix, 'printthelist');
$matrix=file('mylist.txt');
函数printthelist($array){
全球$bigarray;
$line=explode(“##,$array);
$key1=$line[0];
$key2=$line[1];
echo“Column:”.$key1.$key2.:”.$bigarray[$key1][$key2]。
; } 数组_walk($matrix,'printthelist');
我发现了问题。file()函数从文本文件生成一个数组,将每一行放在所述数组的某个位置。但是,它不会去除EOL字符。这意味着以这种方式导入的每个值的末尾都有一个“/n”。您需要使用rtrim()将其删除在任何函数中使用此数据之前。注意:这也意味着文件()函数始终返回字符串数组,即使文件仅包含数字。该函数的文档显示,可以通过在文件名后添加额外参数来省略EOL字符,但是,它并不适用于所有版本的PHP

我已经编辑了代码,现在可以正常工作了


谢谢大家的帮助。

为什么要将$key1和$key2声明为全局变量?那么,$key1等于“array1”$key2相当于$array1的索引-你检查过这是真的吗?另外,你的$matrix变量不是全局变量,因此我认为你的函数不可读。也许你的数组和mylist.txt的完整代码可以帮助你更好地理解你的问题,我不知道你的问题是什么,你现在正试图做什么!@Perroloco I d我只是想以防万一,因为它不起作用anyway@ZathrusWriter是的,所有的值都来自我自己的输入。它们必须工作。此外,我在文件()之前声明$matrix为全局值函数,没有更改任何内容函数中的$key输入是用于什么的?请参见中的示例-可调用函数为每个数组项提供2个参数-value和key…可能没有必要。您是否可以提供数组中的示例以及文件本身中的一两行?这可能会有很大帮助这是(的一部分)其中一个数组:$ib=array();$ib[4]=“医院诊断”;$ib[5]=“假阳性”;$ib[6]=“风险因素”;$ib[7]除“保护自己免受感染感染”外,这是文件的内容,这是文件的内容,这是文件的内容,这是文件的文件的内容:其他:其他。这是文件的内容:其他。这是其他。这是文件的内容:其他,这是其他。其他,这是文件的内容:其他,这是文件的内容:其他,这是其他,这是文件的内容:其他,这是文件的内容:其他。其他,这是其他,这是文件的文件的内容:其他,这是其他。其他,这是其他。这是文件的内容:其他,这是文件的其他,这是文件的内容:其他,这是其他。其他。其他,这是文件的文件的内容:其他:其他。其他。其他。其他。其他。其他。其他。其他。其他。其他。其他的内容:其他:其他。其他。其他。其他的内容是:其他。其他。其他。其他。其他。其他。其他。5 5五五五五五五五五五五五五五五五五五五五五是的,尽管我不知道怎么做我更新了答案,请检查,像以前一样定义你的数组,只需替换最后一部分的代码,顺便说一句,当我看到你的真实数据时,我就能理解你真正需要什么,当你没有提供真实数据时,人们会对你真正想要的东西感到困惑。这段代码和我的代码有什么区别?我找不到答案y:/我因为试图帮助你而有点不舒服,你没有使用“或”"对于你的文件函数,你有两个额外的全局变量,我还清理了你的代码和输出,在你编辑第一篇文章之前,你的函数中有$matrix…请不要告诉我有什么不同,或者我的数组如何帮助你,或者诸如此类,试试答案和建议,也许其中一个可以解决你的问题。人们正在做fav或者在这里帮助您,这不是他们的职责:)很好,很优雅,但它会有同样的问题,因为您没有更改在我的版本中失败的代码。@user1665299 Hmmm,我很确定我不理解。您是说要打印与存储在文本文件中的键匹配的每个数组值,还是仅当文本文件中的键与数组键匹配时才打印该值?我的目的是:-首先,从一组一维数组构建二维数组,在某种程度上,一维数组的名称将是二维数组的第一个键,而一维数组的键将成为二维数组的第二个键。我要做的是打印2D数组的两个键和它们指向的值,只有当这些键的值与我从文本文件传递的值匹配时。
$matrix = file('mylist.txt');

function printthelist($array){
    global $bigarray;

    $line = explode('##', $array);

    $key1 = $line[0];
    $key2 = $line[1];
    echo 'Column: '.$key1.$key2.' : '.$bigarray[$key1][$key2].'<br/>';
}

array_walk($matrix, 'printthelist');