循环对象并获取键和值

9

好的,我们开始吧。我希望我能正确解释这个问题。

我有一个对象,想要循环遍历以获取键和值。下面是我接收到的对象示例。感谢您提前给予任何帮助或建议。

    Array
(
    [0] => stdClass Object
        (
            [id] => 93
            [RecordGUID] => 
            [txtEmplid] => 0134754
            [txtFname] => 
            [txtLname] => 
            [txtMname] => 
            [txtEmail] => 
            [txtSecEmail] => 
            [txtPhoneNo] => 4046565454
            [drpMajor] => 
            [drpStatus] => 
            [regmain] => 
            [chkDental] => 0
            [chkDO] => 
            [chkMD] => 
            [chkMDPHD] => 
            [chkNursin] => 
            [chkOPT] => 
            [chkPA] => 
            [chkPH] => 
            [chkPharm] => 
            [chkPOD] => 
            [chkPostBac] => 
            [chkVet] => 
        )

)

我需要循环遍历上述信息,获取键和值。例如:

id=93
RecordGUID=
txtEmplid=0134754

等等。

再次感谢任何回答的提供。

针对DBF的更新 这是我使用您的代码片段时得到的结果:

int(0)
object(stdClass)#27 (24) {
  ["id"]=>
  string(2) "93"
  ["RecordGUID"]=>
  NULL
  ["txtEmplid"]=>
  string(7) "0134754"
  ["txtFname"]=>
  string(0) ""
  ["txtLname"]=>
  string(0) ""
  ["txtMname"]=>
  string(0) ""
  ["txtEmail"]=>
  string(0) ""
  ["txtSecEmail"]=>
  string(0) ""
  ["txtPhoneNo"]=>
  string(10) "4045506561"
  ["drpMajor"]=>
  NULL
  ["drpStatus"]=>
  NULL
  ["regmain"]=>
  NULL
  ["chkDental"]=>
  string(1) "0"
  ["chkDO"]=>
  NULL
  ["chkMD"]=>
  NULL
  ["chkMDPHD"]=>
  NULL
  ["chkNursin"]=>
  NULL
  ["chkOPT"]=>
  NULL
  ["chkPA"]=>
  NULL
  ["chkPH"]=>
  NULL
  ["chkPharm"]=>
  NULL
  ["chkPOD"]=>
  NULL
  ["chkPostBac"]=>
  NULL
  ["chkVet"]=>
  NULL
}

啊,好的,你能发一下使用foreach循环的代码吗?换句话说,你在哪里写了foreach($object as $key=>$value),请改为foreach($object[0] as $key=>$value)。实际上,你现在正在循环数组对象,而不是索引为0的对象。 - dbf
foreach($regs as $key=>$value) { var_dump($key, $value); } - Richard M
@ParahatMelayev所写的就是你需要的,只有当你知道要迭代的对象的确切索引时,才能使用一个foreach,如果不知道,并且你的数组中有多个对象,那么就需要使用双重foreach。 - dbf
使用 foreach($regs[0] as $key=>$value) - dbf
现在,它会返回如下内容: 字符串(9) "txtEmplid" 字符串(7) "0134754" 字符串(8) "txtFname" 字符串(0) "" - Richard M
2个回答

32

使用get_object_vars ( object $object )

$vars = get_object_vars ( $object );
foreach($vars as $key=>$value) {
  var_dump($key);
  var_dump($value);
}
或者直接遍历对象本身。
foreach($object as $key=>$value) {
  var_dump($key);
  var_dump($value);
}

-- 编辑2

在这里,您将在一行中获得键和值

$string = "";
foreach($regs as $object) {
  foreach($object as $key=>$value) {
    $string += "{$key}={$value} ";
  }
}
echo $string;

如果这不是你需要的,我一无所知..


我使用了你的第二个代码示例,基本上得到了和我现在一样的东西。我无法像我需要的那样回显出$key值或$value值。我做错了什么? - Richard M
我不知道你在做什么错误的事情,没有代码? :D 编辑你的帖子,附上你现在使用的循环/foreach结构,让我们从那里开始看。 - dbf
这个没有起作用:var_dump($key, $value); 但是这个可以:echo $key 和 echo $value,这正是我想要的。谢谢。 - Richard M
现在,我可以开心地去睡觉了。 :-) - Richard M
哈哈,干杯 ;) FYI,var_dump的意思是“变量转储”,它是一种调试方法,可以查看变量具有什么样的值、类型等。另一方面,echo则在解析器/HTML中“显示”该值,或者非常简单地说,在浏览器中 :P - dbf

2
您可以使用 foreach 循环遍历对象属性。
foreach($array as $key => $object)
    foreach($object as $property => $value)
        echo "{$property} : $value" . PHP_EOL;

请查看php手册中的foreach页面。它指定了foreach在对象属性上的工作方式,并且有一个$key=>$value的语法。 - Sinthia V

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接