2011-12-07 22 views
0

私はCodeIgniterでPHPを実行しています。私のアプリケーションでは、サイト全体を通して、MySQLから引き出された書式設定されたアドレスを出力する必要があります。いくつかのケースでは、address_1が空白になっているかもしれませんが、他の場合にはpostcodeがあるかもしれません。私は、これらのアドレスをきちんとフォーマットするヘルパ関数を書いています。クラスのPHPで変数変数を使用する(CodeIgniter)

問題は、いくつかの場所で私は、同じ結果セットに複数のアドレスを使用してこの機能を使用する必要があり、他の場所で私が$query->row('address_1')かのように結果を渡すことができ、そのため、サイトの規模と複雑さにあります$row->address_1

私はこのように私の機能を書かれている:あなたは、私は少し働いた組み合わせを見つけようとelse文の$a['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文のケースを取得しようとしていますが、PHPはそれが言うれる$a['address_1']ラインを除きエラーか何かをスローしません:

Message: Undefined variable: app_address_1, Filename: helpers/address_helper.php

My $prefix変数がapp_に設定されていますが、これは機能しません。どうして?

+2

使用アレイplzkthx。 –

+0

'$ address - > {$ prefix.'address_1 '}'はうまくいくはずです。たぶんそれは 'address_1'プロパティを持っていないかもしれません。 'var_dump($ address)'を使って何が入っているのか調べてみてください。 –

+0

var_dump($ address);コードのデバッグに役立ちます。 – goat

答えて

1

そのラインで十分に確認してください:

$a['address_1']  = (isset($address->${$prefix.'address_1'})  ? $address->${$prefix.'address_1'} : ''); 

あなたは私が見るものを見ていますか?

$address->${$prefix.'address_1'} 
----------^ 

あなたはそこに余分な$を持っています!このエラーは、app_address_1という名前の変数の値を検索しようとしているためです。これは$prefix.'address_1'の結果です。

のは、ステップバイステップを評価してみましょう:

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