‘壹’ php数组中可否存放对象如果可以,那么在smarty的模板中应当如何获取对象的属性值
PHP的数组是支持保存对象的实例的,然后你的错误提示中也能看出是用了数组的方式来访问了一个对象。
建议你不要用对象的形式,而全部都用数组。可以用json函数来转换
$user_array=json_decode(json_encode($user_array),true);
这样一来$user_array里面就全部都是数组,其中原先对象的部分被一个包含了其所有成员属性的数组替代。
‘贰’ PHP中如何定义对象类型数组
应该是存到对象属性中吧
你把
public function setDepartment($department)
{
$this->department=$department;
}
改成
public function setDepartment($department)
{
$this->department[]=$department;
}
即可
private $department;
要不要改成
private $department=array();
其实无所谓
‘叁’ php中数组对象转普通数组
/**
* 对象数组转为普通数组
* 此函数支持多维数组处理。
*
* @param array
* @return array
*/
function objarray_to_array($obj) {
$ret = array();
foreach ($obj as $key => $value) {
if (gettype($value) == "array" || gettype($value) == "object"){
$ret[$key] = objarray_to_array($value);
}else{
$ret[$key] = $value;
}
}
return $ret;
}
你可以去后盾人平台看看,里面的东西不错
‘肆’ php 如何将数组转化成对象
$arr=array(0=>array('id'=>1,'name'=>'aaa'));
$arr=json_encode($arr);
$arr=json_decode($arr);
var_mp($arr);
试试,你就知道了
‘伍’ PHP中数组是不是对象
不是对象。而且不是真正意义上的数组。
‘陆’ PHP 对象数组的筛选和判断
手打不易,有用请采纳。
$rArray = json_decode(json_encode($r),true);//通过json将对象转换为数组。
foreach($rArray as $k => $v){
if($v['banji']==1){ //如果banji=1则求语文成绩
echo "语文成绩={$v['yuwen']}";
}elseif($v['banji']==2){ //如果banji=2则求数学成绩
echo "语文成绩={$v['shuxue']}";
}
if($v['xingming']=='x'){ //有一个姓名为$x是否在banji1
if($v['banji']==1){
echo "xingmign为x的是班级1";
}else{
echo "xingmign为x的不是班级1";
}
}
}
‘柒’ php创建一个类,在类中声明一个数组存放另一个对象,为什么无法调用数组中对象的方法
//新建一个类User用来存放这,三个数据
//结果放到一个User数组中,你看这可以吗?
//还是说要放到一个list中?
public class ObjectTest {
public static void main(String[] args) {
String[] id = new String[8];
String[] type = new String[8];
String[] username = new String[8];
User[] users = getUsers(type, id, username);
}
private static User[] getUsers(String[] type, String[] id, String[] username) {
User[] users = new User[type.length];
for (int i = 0; i < type.length; i++) {
users[i] = new User(id[i], type[i], username[i]);
}
return users;
}
}
class User {
public User(String id, String tpye, String username) {
this.tpye = tpye;
this.id = id;
this.username = username;
}
private String tpye;
private String id;
private String username;
public String getTpye() {
return this.tpye;
}
public String getId() {
return this.id;
}
public String getUsername() {
return this.username;
}
public void setTpye(String tpye) {
this.tpye = tpye;
}
public void setId(String id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
}
‘捌’ php中数组能储存对象吗
可以的 举个简单的例子给你
<?php
class foo
{
function do_foo()
{
echo "Doing foo.";
}
}
$bar = new foo;
$arry1=array(1,$bar);//这里将实例化的对象存入数组
var_mp($arry1);//这里打印数组结构 你会发现下标1的位置存储了一个object对象
$arry1[1]->do_foo();;//以数组形式 调用do_foo();
$bar->do_foo();//正常的调用do_foo()
//两种方式输出是一样的 充分说明 数组是可以存储对象的 希望对你的学习有帮助
?>
//下面是输出 我自动换行分割了下 其实是一行
array(2) { [0]=> int(1) [1]=> object(foo)#1 (0) { } }
Doing foo.
Doing foo.
‘玖’ PHP数组转为对象怎么处理
按照你的要求编写的php程序如下
<?php
$s='{"data":["阿里:65","支付宝:2","微信:1"]}';
$obj=json_decode($s,true);
$arr=$obj['data'];
$c=array();
for($i=0;$i<count($arr);$i++){
$b=array();
$a=explode(':',$arr[$i]);
$b[$a[0]]=$a[1];
$c[$i]=$b;
}
$result['data']=$c;
echo json_encode($result,JSON_UNESCAPED_UNICODE);
?>
‘拾’ PHP数组里面存放对象
楼上解释正确,不过我补充一下。
既然初始化是在类声明之后,那么可以通过手动串行化和反串行化来达到目的。
保存的时候使用serialize来保存,提取恢复的时候使用unserialize来恢复。
当然,这个还有一个要注意的地方,需要保存的对象最好是只包含数据,意思是,不要有数据库连接资源、文件资源之类的,如果包含这些,串行和反串行的结果都是一个int 0,反串行的时候可能不能正常工作。
至于对象串行反串行的一些可定制的功能,可以参考帮助文档的这个部分:
http://dk2.php.net/manual/zh/language.oop.magic-functions.php
通过定义魔术函数__sleep __wakeup来实现。