Я использую PHP с CodeIgniter. Мое приложение должно выводить отформатированные адреса по всему сайту, извлеченные из 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'} : '');
}
Как вы видите, я немного "экспериментировал" с $a['address_1']
оператора else
, пытаясь найти комбинацию, которая сработала.
Я пытаюсь заставить работать оператор else
, но PHP не выдает никаких ошибок или чего-либо еще, кроме строки $a['address_1']
, в которой говорится:
Message: Undefined variable: app_address_1, Filename: helpers/address_helper.php
.
Моя $prefix
переменная установлена на app_
, но это не работает. Почему?