2010-06-15 35 views
1

所以我認爲這應該很容易,但是,我在這裏沒有發現史詩般的錯誤(正如他們在interwebz上所說的那樣)。在CodeIgniter/PHP中將一組數據傳遞給一個私有函數? [facepalm]

因此,這裏是我的代碼:

function xy() { 
    $array['var1'] = x; 
    $array['var2'] = y; 
    echo $this->_z; 
} 

function _z($array) { 
    $xy = $x.$y; 
    return $xy; 
} 

那麼,爲什麼不說看似簡單的代碼工作的?我知道在視圖中你可以傳遞數組,並且變量可以在只有數組標題的視圖中訪問,但是,爲什麼在這種情況下它不起作用?

傑克

回答

1

因爲​​不是一個視圖。用$this->_z($array);調用它。 CodeIgniter處理視圖和傳遞給它們的變量。對於非視圖,這不起作用。 PHP不會自動爲你做。

加載一個視圖中所做的一個視圖文件中/system/application/views/$this->load->view('my_view_name', $array);

調用它,我會重寫你的功能如下:

function xy() 
{ 
    $x = "some value"; 
    $y = "some other value"; 

    echo $this->_z($x, $y); 
} 

function _z($a, $b) 
{ 
    return $a.$b; 
} 
+0

謝謝喬希,但是,我不想加載視圖。我想將數據傳遞給一個私有函數進行處理,格式相應,然後返回從我的公共函數回顯。 – Jack 2010-06-15 12:15:17

+0

只需重新閱讀你的答案...並理解它更多一點:D謝謝,我會看到我可以去哪裏。 – Jack 2010-06-15 12:21:05

+0

@Jack:你不能創建一個鍵值的數組,並將其傳遞給一個函數,並讓它們按名稱可用(因爲它在視圖中工作)。我會寫一些示例代碼。 – 2010-06-15 12:32:49

0

你可以模仿你想用PHP的CI意見的行爲本地函數提取物()(即CI是怎麼做的)

function xy() { 
    $some_array = array(
     'foo' => 'Hello', 
     'bar' => 'world' 
    ); 
    echo $this->_z($some_array); 
} 

function _z($array) { 
    extract ($array); 
    $xy = "$foo $bar"; 
    return $xy; 
} 


xy(); 

Refe rence:http://php.net/manual/en/function.extract.php

相關問題