在PHP中调用数组内的方法

时间:2012-02-13 02:47:29

标签: php arrays class

我想在PHP中调用数组(在类中)中的方法:

const emtpy= "Please correct %s";
...
$myArray= array(
    '1'=>'myvalue',
    '2'=> printf(self::emtpy,'user')
);

但是,Eclipse会为被调用方法的第一个括号返回错误。

syntax error, unexpected '(', expecting ')

有人有什么想法吗? 谢谢!

4 个答案:

答案 0 :(得分:2)

在定义类成员时,你不能使用这样的表达式 - 它们需要是静态值。如果需要根据常量,函数等分配默认值,则需要在构造函数中执行此操作。

答案 1 :(得分:1)

您正在寻找anonymous functions(它们自php 5.3.0开始提供),但您需要的示例是:

$myArray = array(
    '1' => 'myvalue',
    '2' => function(){printf( class_name::empty, 'user'); }
);

您应该尽可能使用callback

$myArray = array(
    '1' => 'myvalue',
    '2' => array( $this, 'myCallback')
);

答案 2 :(得分:1)

您可以尝试使用array_map。

试试这门课程:

class CallbackArrayClass {

  public static $empty;

  public static function callback($a) {
    self::$empty =  printf("please enter your name %s", $a);
  }

  public function initArray() {
    $myArray= array(
      '1'=>'myvalue',
      '2'=> array_map("self::callback", array('user'))
    );
  }

}

$c = new CallBackArrayClass();
$c->initArray();

http://php.net/manual/en/function.array-map.php

function callback($a) {
  return printf("please enter your name %s", $a);
}

$myArray= array(
    '1'=>'myvalue',
    '2'=> array_map('callback', array('user'))
);

答案 3 :(得分:0)

我认为你不能为printf()的格式字符串使用这样的常量。尝试不使用const ...使emtpy(拼写)const为$变量。

编辑:

这就是我的意思......但是,回调的想法并不是一个坏主意。

$empty = "Please correct %";

$myArray = array(
  '1' => 'myvalue',
  '2' => printf($empty, 'user')
);

echo $myArray[2];