用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3906|回复: 22
收起左侧

[已过期] 已删除

[复制链接]
发表于 2015-1-19 10:38:10 | 显示全部楼层 |阅读模式
本帖最后由 nic 于 2015-1-22 11:19 编辑

aaaaaaa
发表于 2015-1-19 15:36:28 | 显示全部楼层
nic 发表于 2015-1-19 15:12
我打包上传了 你看看怎么弄

不知道是不是你要的。

PHP复制代码
 
class Welcome extends CI_Controller {
 
    public function index() {
        $variable = array(
            'a' => '1',
            'b' => '2',
            'c' => '3',
            'd' => '4',
        );
        $this->load->library('text'); //第一次可行,第二次就失败
        foreach ($variable as $key => $value) {
            $data = array('key' => $key, 'value' => $value);
            $this->text->init($data);
            $temp = $this->text->function1();
            if($temp){
                var_dump($data);
                break;
            }
        }
    }
}
 
复制代码
PHP复制代码
 
class Text {
    private $key;
    private $value;
 
    public function __construct($data='') {
        $this->init($data);
    }
 
    function init($data){
        if(!$data) return;
        $this->key = $data["key"];
        $this->value = $data["value"];
        echo $this->key . "<br/>";
        echo $this->value . "<br/>";
    }
 
    public function function1() {
        $key = $this->key;
        $value = $this->value;
        if($key == "d" && $value == "4") {
            return TRUE;
        } else {
            return FALSE;
        }
    }
}
 
复制代码


输出:
a
1
b
2
c
3
d
4
array  'key' => string 'd' (length=1)  'value' => string '4' (length=1)


评分

参与人数 1威望 +2 收起 理由
Closer + 2 阿呆厲害,我也在想類似的方式.

查看全部评分

发表于 2015-1-19 12:34:59 | 显示全部楼层
$this->load->library('bb');
foreach
$this->bb->init($data);
endforeach
发表于 2015-1-19 10:42:40 | 显示全部楼层
本帖最后由 Closer 于 2015-1-19 10:43 编辑

你想要做到甚麼樣的效果?
為何不考慮用 model ?
 楼主| 发表于 2015-1-19 10:47:37 | 显示全部楼层
<?php
$variable = array(
        'a' => '1',
        'a' => '2',
        'a' => '3',
        'a' => '4',
);
foreach ($variable as $key => $value) {
        $data = array($key=>$value);
        $this->load->library('bb', $data);
        $temp = $this->bb->function();
        if($temp == "判断成立"){
                var_dump($data);
                break;
        }
}
发表于 2015-1-19 10:59:01 | 显示全部楼层
也許 library 有防止重複載入機制
你試著反過來把 foreach 放進你的 bb 做迴圈
 楼主| 发表于 2015-1-19 11:12:29 | 显示全部楼层
Closer 发表于 2015-1-19 10:59
也許 library 有防止重複載入機制
你試著反過來把 foreach 放進你的 bb 做迴圈

- -怎么可能啊 我控制器靠这个东西判断 回来的值我还要用的 难道我把东西都塞进去library 然后等类返回给我值么- -
发表于 2015-1-19 11:21:01 | 显示全部楼层
nic 发表于 2015-1-19 11:12
- -怎么可能啊 我控制器靠这个东西判断 回来的值我还要用的 难道我把东西都塞进去library 然后等类返回给 ...

library 不像 model 是呼叫一次用一次
當你 library 載入之後,該方法(或類)都可以使用
你試想,你載入一個 bb 的 library
理所當然的這個方法都可以用 $this->bb 來讀取
當你有兩個 bb 呢?
怎麼判斷?

CI 要嘛只讀取第一次 library
要嘛只會獲取第一個 library

你只能換其他方式來處理
 
 楼主| 发表于 2015-1-19 11:22:28 | 显示全部楼层
model不也是一样么- -难道你$this->load->model('a');就是$this->load->model('a');
$this->a->function1();
$this->load->model('a');
$this->a->function2():
?
发表于 2015-1-19 11:23:30 | 显示全部楼层
nic 发表于 2015-1-19 11:22
model不也是一样么- -难道你$this->load->model('a');就是

但 model 載入之後是調用裡面的方法
除非你的 library 也用類似的方式
 楼主| 发表于 2015-1-19 11:24:54 | 显示全部楼层
- -可能我没说清楚 现在的问题只在于 调用library是传值进去构造函数 构造函数的值 其他方法用到的 这里只是做一个例子
发表于 2015-1-19 11:39:25 | 显示全部楼层
nic 发表于 2015-1-19 11:24
- -可能我没说清楚 现在的问题只在于 调用library是传值进去构造函数 构造函数的值 其他方法用到的 这里只 ...

你的問題和解答
我已經在六樓的地板給你了

我上述所指的 model
是指 $this->load->model('test');
這樣使用 $this->test->get_data('123');

而非
$this->load->model('test');
$this->test->get_data('123');
$this->load->model('test');
$this->test->get_data('123');

這樣的邏輯是錯誤的
因為系統不會知道你到底要哪一個 test (model)

同理 library 也是類似

 

本版积分规则