Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 - Fatal编程技术网

在php中管理函数数组

在php中管理函数数组,php,arrays,Php,Arrays,我想在关联数组中管理一组文本转换 该示例有效,但会生成通知。如果规则是在不同的文件中求值的,而不是在定义数组的文件中求值的,那么它将不起作用。我怎样才能避开这个问题 代码 <?php function noop($x){ return $x; } function trimAndUpper($x){ return strtoupper(trim($x)); } $a = array( " a " => trim, " b " => noop

我想在关联数组中管理一组文本转换

该示例有效,但会生成通知。如果规则是在不同的文件中求值的,而不是在定义数组的文件中求值的,那么它将不起作用。我怎样才能避开这个问题

代码

<?php

function noop($x){
    return $x;
}

function trimAndUpper($x){
    return strtoupper(trim($x));
}

$a = array(
    " a " => trim,
    " b " => noop,
    " c " => trimAndUpper,
);

foreach($a as $key=>$func){
    echo "key:'$key' value:'{$func($key)}'\n";
}
php版本是PHP5.3.27,目前我必须与5.3兼容。

您的代码:

echo "key:'$key' value:'{$func($key)}'\n";
这里的问题是函数调用在带引号的字符串中。尽管您可以像这样引用变量,但不能从字符串内部调用函数

解决方案:从字符串中取出函数调用:

echo "key:'$key' value:'".$func($key)."'\n";
阵列定义也有问题:

" a " => trim,
这里的函数名(例如
trim
)不能像这样简单地用它们的名称来引用;您需要将它们声明为字符串

" a " => "trim",
您的代码:

echo "key:'$key' value:'{$func($key)}'\n";
这里的问题是函数调用在带引号的字符串中。尽管您可以像这样引用变量,但不能从字符串内部调用函数

解决方案:从字符串中取出函数调用:

echo "key:'$key' value:'".$func($key)."'\n";
阵列定义也有问题:

" a " => trim,
这里的函数名(例如
trim
)不能像这样简单地用它们的名称来引用;您需要将它们声明为字符串

" a " => "trim",

只需引用这些词,因为在您的示例中没有函数数组,而是函数名(作为字符串)

$a = array(
" a " => "trim",
" b " => "noop",
" c " => "trimAndUpper",
);

只需引用这些词,因为在您的示例中没有函数数组,而是函数名(作为字符串)

$a = array(
" a " => "trim",
" b " => "noop",
" c " => "trimAndUpper",
);

不幸的是,函数不是PHP中的第一类,您不能通过符号名引用它们。相反,您的代码试图引用未定义的常量(因此需要注意)。可以使用字符串调用函数名


不幸的是,函数不是PHP中的第一类,您不能通过符号名引用它们。相反,您的代码试图引用未定义的常量(因此需要注意)。可以使用字符串调用函数名


可能重复的不知道,但可能是
echo“键:'$key'值:'{.$func($key)。“}'\n”?只需将函数名写为字符串可能与未知项重复,但可能是
echo“key:'$key'值:'{.$func($key)。“}'\n”?只需编写函数名,因为stringsit在示例中起作用。但如果调用函数的位置不确定,则不知道字符串中引用的函数。不,当然不知道。不能调用PHP不知道的函数。必须先加载函数,然后才能调用它。PHP提供了一个
函数\u exists()
函数来检查这一点。PHP中还有一个自动加载系统,它允许您在不首先显式包含相关代码的情况下进行调用,但这只适用于类,而不适用于函数。但如果调用函数的位置不确定,则不知道字符串中引用的函数。不,当然不知道。不能调用PHP不知道的函数。必须先加载函数,然后才能调用它。PHP提供了一个
函数\u exists()
函数来检查这一点。PHP中还有一个自动加载系统,它允许您在不首先显式包含相关代码的情况下进行调用,但这只适用于类,而不适用于函数。