在类上使用PHP中的变量(CodeIgniter)

在类上使用PHP中的变量(CodeIgniter),php,mysql,codeigniter,variables,Php,Mysql,Codeigniter,Variables,我正在使用CodeIgniter运行PHP。我的应用程序需要输出整个站点的格式化地址,从MySQL中提取。在某些情况下,address_1可能是空的,也可能是填的,在其他情况下,postcode可能在那里,也可能不在那里,等等。我已经编写了一个帮助函数,当传递一个MySQL结果集时,它可以对这些地址进行整齐的格式化 问题是,由于站点的大小和复杂性,在某些地方,我需要在同一结果集中使用多个地址的函数,而在其他地方,我可能会将结果作为$query->row('address_1')或作为$row->

我正在使用CodeIgniter运行PHP。我的应用程序需要输出整个站点的格式化地址,从MySQL中提取。在某些情况下,
address_1
可能是空的,也可能是填的,在其他情况下,
postcode
可能在那里,也可能不在那里,等等。我已经编写了一个帮助函数,当传递一个MySQL结果集时,它可以对这些地址进行整齐的格式化

问题是,由于站点的大小和复杂性,在某些地方,我需要在同一结果集中使用多个地址的函数,而在其他地方,我可能会将结果作为
$query->row('address_1')
或作为
$row->address_1
传递

我将我的函数写出来如下:

// Get every element from the MySQL Resultset       
            if(method_exists($address, 'row'))
            {
                $a['abode']         = ($address->row($prefix.'abode')         ? $address->row($prefix.'abode') : '');
                $a['building_no']   = ($address->row($prefix.'building_no')   ? $address->row($prefix.'building_no') : ''); 
                $a['building_name'] = ($address->row($prefix.'building_name') ? $address->row($prefix.'building_name') : '');
                $a['office_number'] = ($address->row($prefix.'office_number') ? $address->row($prefix.'office_number') : '');
                $a['address_1']     = ($address->row($prefix.'address_1')     ? $address->row($prefix.'address_1') : '');
                $a['address_2']     = ($address->row($prefix.'address_2')     ? $address->row($prefix.'address_2') : '');
                $a['town']          = ($address->row($prefix.'town')          ? $address->row($prefix.'town') : '');
                $a['county']        = ($address->row($prefix.'county')        ? $address->row($prefix.'county') : '');
                $a['postcode']      = ($address->row($prefix.'postcode')      ? $address->row($prefix.'postcode') : '');
                $a['country']       = ($address->row($prefix.'country')       ? $address->row($prefix.'country') : '');
            }
            else
            {
                // PHP Variable Variables
                $a['abode']         = (isset($address->{$prefix.'abode'})           ? $address->{$prefix.'abode'}: '');     
                $a['building_no']   = (isset($address->{$prefix.'building_no'})     ? $address->{$prefix.'building_no'} : '');
                $a['building_name'] = (isset($address->{$prefix.'building_name'})   ? $address->{$prefix.'building_name'} : '');
                $a['office_number'] = (isset($address->{$prefix.'office_number'})   ? $address->{$prefix.'office_number'} : '');
                $a['address_1']     = (isset($address->${$prefix.'address_1'})      ? $address->${$prefix.'address_1'} : '');
                $a['address_2']     = (isset($address->{$prefix.'address_2'})       ? $address->{$prefix.'address_2'} : ''); 
                $a['town']          = (isset($address->{$prefix.'town'})            ? $address->{$prefix.'town'} : ''); 
                $a['county']        = (isset($address->{$prefix.'county'})          ? $address->{$prefix.'county'} : ''); 
                $a['postcode']      = (isset($address->{$prefix.'postcode'})        ? $address->{$prefix.'postcode'} : ''); 
                $a['country']       = (isset($address->{$prefix.'country'})         ? $address->{$prefix.'country'} : '');
            }
正如您所见,我在
else
语句的
$a['address\u 1']
上进行了一些“实验”,试图找到一个有效的组合

我正试图让
else
语句用例正常工作,但PHP除了
$a['address\u 1']
行之外,不会抛出任何错误或任何东西,该行显示:

消息:未定义变量:app\u address\u 1,文件名:helpers/address\u helper.php


My
$prefix
变量设置为
app
,但这不起作用。为什么?

仔细看那一行:

$a['address_1']     = (isset($address->${$prefix.'address_1'})      ? $address->${$prefix.'address_1'} : '');
你看到我看到的了吗

$address->${$prefix.'address_1'} 
----------^
你有多余的
$
!错误是因为它试图查找名为
app\u address\u 1
的变量的值,该变量是
$prefix.'address\u 1'
的结果

让我们一步一步地评估:

$address->${$prefix.'address_1'}
$address->${'app_address_1'}
$address->{$app_address_1}
$address->{NULL}

$address->{$prefix.'address_1'}
应该可以正常工作。也许它没有
地址\u 1
属性。尝试使用
var\u dump($address)
查看其中的内容。var\u dump($address);以帮助您调试代码。