在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中还有一个自动加载系统,它允许您在不首先显式包含相关代码的情况下进行调用,但这只适用于类,而不适用于函数。