Php 使用foreach检索以符号作为对象的数组值

Php 使用foreach检索以符号作为对象的数组值,php,foreach,Php,Foreach,我想检索数据库中的字段名,其中一个名为'wardno/houseno'。当我尝试使用foreach将其作为对象检索时,我发现 我的代码 $this->db->select('*'); $this->db->from('tbl_application'); $this->db->where('app_no', '1/ML/201314/TVM'); $q=$this->db->get(); foreach($q->result() as $ro

我想检索数据库中的字段名,其中一个名为
'wardno/houseno'
。当我尝试使用
foreach
将其作为对象检索时,我发现

我的代码

$this->db->select('*');
$this->db->from('tbl_application');
$this->db->where('app_no', '1/ML/201314/TVM');
$q=$this->db->get();
foreach($q->result() as $row) 
echo $row->wardno/houseno;
错误显示

A PHP Error was encountered
Severity: Notice
Message: Undefined property: stdClass::$wardno
Filename: controllers/admin_sona.php
Line Number: 19

A PHP Error was encountered
Severity: Notice
Message: Use of undefined constant houseno - assumed 'houseno'
Filename: controllers/admin_sona.php
Line Number: 19

A PHP Error was encountered
Severity: Warning
Message: Division by zero
Filename: controllers/admin_sona.php
Line Number: 19    
是否可以使用符号作为对象检索数据库值?

尝试更改此选项:

$row->wardno
为此:

$row['wardno']
豪斯诺也是这样

$row['houseno']
不知道数据库中是否有名为
wardno/houseno
的字段,我认为您有两个不同的字段。如果是同一字段,我建议您在数据库中使用
\uuu
而不是
/

如果是相同的字段,请尝试以下操作:

echo $row['wardno/houseno'];
function arrayToObject($array) {
    if (!is_array($array)) {
        return $array;
    }

    $object = new stdClass();
    if (is_array($array) && count($array) > 0) {
        foreach ($array as $name=>$value) {
            $name = strtolower(trim($name));
            if (!empty($name)) {
                $object->$name = arrayToObject($value);
            }
        }
        return $object;
    }
    else {
        return FALSE;
    }
}

$arr = arrayToObject($your_array);
要将数组转换为对象,请尝试以下操作:

echo $row['wardno/houseno'];
function arrayToObject($array) {
    if (!is_array($array)) {
        return $array;
    }

    $object = new stdClass();
    if (is_array($array) && count($array) > 0) {
        foreach ($array as $name=>$value) {
            $name = strtolower(trim($name));
            if (!empty($name)) {
                $object->$name = arrayToObject($value);
            }
        }
        return $object;
    }
    else {
        return FALSE;
    }
}

$arr = arrayToObject($your_array);

你能试着给我一些建议吗

foreach($q->result_array() as $row) 
  echo $row['wardno/houseno'];// or even echo $row['wardno\/houseno'];
而不是

foreach($q->result() as $row) 
  echo $row->wardno/houseno;
试试看

----编辑------

由于不希望将其转换为数组,请尝试

echo $row[17]; //Just try. I am not sure where it hurts the code. In case of error, let me know in comments

尝试像
echo$row->wardno;echo$row->houseno在列名中使用斜杠不是正式的。尝试用下划线“”替换“/”。然后试着运行你的代码@user3017264在字段名中使用斜杠不是标准。可能正在更改为“\u”是最好的标准方式。@user3017264:如果您有解决方案,请告诉我们。。这会很有趣。k,我将字段名中的“/”替换为“\uu”完美。我添加了一个将数组转换为object@user3017264的函数。这是一种将数组转换回object的方法。。或者你也可以使用类似于#5、#6、#7的东西,你能打印($row)并单独给我第一行的结果吗?您可以通过提供索引来访问。严格来说,这是一个例子:$row[0]这也是一个尝试。!是的!这里是这样的,stdClass对象([app_id]=>2[app_no]=>1/ML/201314/TVM[office_code]=>TVM[category]=>SC[loan_id]=>5[app_name]=>Manu K[app_photo]=>B17916F172F50E0861392A0C46A924B.png[app符号]=>D3D339EDEC46C4418F9EAAF965FCD3F.jpg[dob]=>2013-12-18[性别]=>18[StateCd]=>LBP]=>51[villageCd]=>3[talukCd]=>3[wardno/houseno]=>A41(12/1234)[housename]=>Sreenilayam[ipaddress]=>10.162.21.14[app_status]=>1)尝试echo$row[17];再一次。。试试看。我把16岁改为17岁。。对不起,我的错