数组到字符串转换cakephp

时间:2014-02-20 14:12:30

标签: php arrays cakephp

我正在开发Cake PHP。请给我一个解决方案来解决这个问题:

Controller.php这样:

public function test() {
    $this->set('users_list', $this->User->find('list', array('fields' => array('User.id', 'User.fullname'))));
}

test.ctp:

<?php echo $users_list ?>

错误:

  

引发错误:数组到字符串转换php

我需要显示值。

4 个答案:

答案 0 :(得分:0)

test.ctp:

<?php echo "<pre>";print_r($users_list);echo "</pre>";  ?>

由于find的结果将是一个数组,所以上面的行将打印$ user_list数组的所有元素,现在你必须根据你的逻辑使用这个数组,例如你可以使用foreach()来获取单个元素这个数组。

希望以上解释足以让您理解!

答案 1 :(得分:0)

您的功能应如下所示:

public function test() {
    $this->set('users_list', $this->User->find('all', array('fields' => array('User.id',         'User.fullname'))));
}

然后在你的视图中你应该做一个foreach循环来输出这样的值:

foreach($users_list as $ul){
    echo 'This is the id: '.$ul[0]['User']['id'];
    echo ' This is the full name: '.$ul[0]['User']['fullname'];
}

这将是我的方式,但我不知道它是否是最好的

如果您想要更轻松的东西,可以使用以下方式打印数组:

print_r($users_list);

答案 2 :(得分:0)

您可以使用String类。它有一个非常酷的方法叫做toList(),它用于在最后一个元素之前打印一个带有'和'的数组。

App::uses('String', 'Utility');
echo String::toList($users_list);

查看文档:{​​{3}}

答案 3 :(得分:0)

这对我有用。希望它也适合你 这是我的ctp文件代码

 $this->Form->input('answertype',array('div'=>false,'label'=>false,'type'=>'select','multiple'> => 'checkbox', 'options' =>  $arrayOptions, 'class' => 'form-control  dropdown-menu-item '));

当我在控制器中调试时,我得到了像这样的结果

array(
'PackageDescription' => array(
    'name' => 'Special Di scout Package',
    'question' => '20',
    'revision' => '32',
    'experttype' => '100',
    'responsetime' => '6',
    'answertype' => array(
        (int) 0 => 'image',
        (int) 1 => 'audio'
    ),
    'support' => 'email&sms',
    'status' => 'public'
)

我在我的模型中进行一些更改以将任何数组存储为字符串

 public function beforeSave($options = array()) {
        if(!empty($this->data[$this->alias]['answertype']) && $this->data[$this->alias]['answertype'] != ''){
            $subArr = $this->data[$this->alias]['answertype'];
            $this->data[$this->alias]['answertype'] = implode(',', $this->data[$this->alias]['answertype']);
            $my_model = ClassRegistry::init('Answer');
            $AnswerInfo = $my_model->find('all', array('conditions' => array('Answer.name' => $subArr), 'fields' => array('Answer.name', 'Answer.name')));
            if(!empty($AnswerInfo)){
                $answertype = array();
                foreach($AnswerInfo as $info){
                    $answertype[] = $info['Answer']['name'];
                }
                $this->data[$this->alias]['answertype'] = implode(',', $answertype);
            }
        }   
        if (!empty($this->data[$this->alias]['name']) && empty($this->data[$this->alias]['slug'])) {
            if(!isset($this->data[$this->alias]['id'])){
                $this->data[$this->alias]['slug']=$this->stringToSlug($this->data[$this->alias]['name']);
            }else{
                $this->data[$this->alias]['slug']=$this->stringToSlug($this->data[$this->alias]['name'],$this->data[$this->alias]['id']);
            }    
        }
        return true;
    }