循环 OBJECT 并获取 key 和 value

Posted

技术标签:

【中文标题】循环 OBJECT 并获取 key 和 value【英文标题】:Loop OBJECT and obtain both key and value 【发布时间】:2012-09-02 08:16:15 【问题描述】:

好的,我们开始吧。我希望我能正确解释这一点。

我有一个对象,我想循环获取键和值。这是我收到的对象的示例。提前感谢您的任何帮助或想法。

    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)。本质上,您当前循环的是 Array 对象,而不是索引 0 处的对象。 foreach($regs as $key=>$value) var_dump($key, $value); @ParahatMelayev 写的是你需要的,只有当你知道要迭代的对象的确切索引时,你可以只使用一个 foreach,如果没有,并且你的文件中有多个对象数组,只是双倍的疼痛 k,所以使用foreach($regs[0] as $key=>$value) 现在,它像这样返回: string(9) "txtEmplid" string(7) "0134754" string(8) "txtFname" string(0) "" 【参考方案1】:

您可以使用foreach 循环访问对象属性

foreach($array as $key => $object)
    foreach($object as $property => $value)
        echo "$property : $value" . php_EOL;

【讨论】:

见php手册page for foreach。它指定 foreach 适用于对象属性,并且有 $key=>$value 语法。【参考方案2】:

使用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 值。我做错了什么? 不知道你在没有代码的情况下做错了什么? :D 使用您现在使用的当前循环/foreach 结构编辑您的帖子,让我们从那里看看 这不起作用 var_dump($key, $value);但这确实 echo $key 和 echo $value 这正是我想要的。谢谢。 现在,我可以高兴地去睡觉了。 :-) 哈哈,干杯 ;) fyi,var_dump 意思是“变量转储”,这是一种调试方法,看它有什么样的值,它是什么类型等等。echo 上另一方面“显示”解析器/html上的值,或者说很简单,在浏览器中:P

以上是关于循环 OBJECT 并获取 key 和 value的主要内容,如果未能解决你的问题,请参考以下文章

properties类中怎么根据value取到key

JS中key-value存取

如何循环遍历数组

c#dictionary通过key获取value

java Map 根据Map的值(value)取键(key)

key值与value值的匹配