我正在开发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
我需要显示值。
答案 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;
}