簡體   English   中英

在PHP中的數組內調用方法

[英]Call a method inside an array in PHP

我想在PHP的數組中(類中)調用方法:

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

但是,Eclipse對於被調用方法的第一括號返回一個錯誤。

syntax error, unexpected '(', expecting ')

有人有什么想法嗎? 謝謝 !

定義類成員時,不能使用類似的表達式-它們必須是靜態值。 如果需要基於常量,函數等分配默認值,則需要在構造函數中執行此操作。

您正在尋找匿名函數 (自php 5.3.0起才可用),但是您需要的示例是:

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

您應該盡可能使用回調

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

您可以嘗試使用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'))
);

我認為您不能為printf()的格式字符串使用類似的常量。 嘗試不使用const的情況...將emtpy (拼寫)const設置為$ variable。

編輯:

這就是我的意思。盡管如此,回調的想法並不是一個壞主意。

$empty = "Please correct %";

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

echo $myArray[2];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM