2015-08-19 152 views
0

我會從一個函數內部創建一個帶有ID帖子的數組,並讓他在課外。 我的代碼:從課堂設置一個數組,並讓他在課堂外

我接收在屏幕上此resuld: ID: (沒有ID)

但是,如果我插入內部setNewHomePost()用於陣列的回波,我會正確地獲得數組,但不在課堂之外。

 \t function setNewHomePost($num, $value){ 
 
    \t \t $newHomePost[$num] = $valore; 
 
    \t \t echo $newHomePost[0]; 
 
    \t }
所以似乎是陣列的工作「功能部件」內部罰款,但不工作外面。 有人可以幫我嗎?

+0

如果用斷章取義的WordPress此代碼不能正常工作 – gpupo

回答

2
function setNewHomePost($num, $value){ 
    $newHomePost[$num] = $value; 
} 

這創建名爲$newHomePost一個local變量,索引處設置一個值,並返回。一旦它返回,局部變量消失。從鏈接的手冊頁:

在函數內部使用的任何變量缺省侷限於本地函數作用域。

你要設置的類成員propertynewHomePost代替:

function setNewHomePost($num, $value) { 
    $this->newHomePost[$num] = $value; 
} 

更新

這是你目前如何定義了get方法:

function getNewHomePost() { 
    return "ID: " . $this->newHomePost[0]; 
} 

我懷疑你還在擺弄着t他並試圖讓它工作。如果你真的想僅僅只有再回到第0指數,嘗試這樣的東西,而不是:

function getNewHomePost() { 
    return isset($this->newHomePost[0]) ? $this->newHomePost[0] : null; 
} 

當建立一個類記住,你不能做什麼命令你的公共方法可以從另一個調用任何假設對象或調用代碼(即使調用代碼本身存在於類內部,方法是公共的,這意味着任何東西都可以調用它們)。上面的代碼沒有任何規定,因爲您不必在getNewHomePost之前撥打addNewHomePost。我想如果你看看你的日誌,你可能會看到幾個Notice: Undefined index..類型的錯誤。

此外,一定要檢查主叫方:

$myClass = new cat_widget; 
$myClass->setNewHomePost(0, 'my new home post!'); 

$homePost = $myClass->getNewHomePost(); 
echo $homePost ? $homePost : 'None'; 

我想一個更好的getter方法很可能是這樣的:

function getNewHomePost($i) { 
    return isset($this->newHomePost[$i]) ? $this->newHomePost[$i] : null; 
} 
+0

謝謝。現在,我怎麼能從課外使用這個變量? '$ test = new className(); echo $ test-> getNewHomePost();' 以外的類不起作用。 – angelo

+0

感謝@watcher的回答。我嘗試了你的建議,但是如果我在'function widget'外面插入'getNewHomePost()',這不起作用並且只接收沒有ID號的'ID:'(例如ID:567)。 如果我在'function widget'裏面插入'getNewHomePost()',這個工作正常,並且打印帶有ID號(ID爲567)的'ID:'。 所以我會'getNewHomePost()'也可以在'function widget'之外使用。有什麼建議嗎? – angelo