2011-07-13 16 views
0

私のdbのリレーションシップを変更するには、アプリにいくつかの変更を加えなければなりませんでした。PHP foreach配列

はもともと私が私が欲しいいただきました!1つの:: 0-1関係

if ($model->address->AddressLine1) echo $model->address->AddressLine1.'<br />'; 
if ($model->address->AddressLine2) echo $model->address->AddressLine2.'<br />'; 
if ($model->address->city->Name) echo $model->address->city->Name; 
if ($model->address->city->regionCode->RegionCode) echo ', '.$model->address->city->regionCode->RegionCode; 

については以下の持っていたが、1 :: 0-nの関係

foreach ($model->address as $al1) 
foreach ($model->address as $al2) 
foreach ($model->address as $al2) 
foreach ($model->address as $city) 
foreach ($model->address as $region) { 
    echo $al1->AddressLine1.' '.$al2->AddressLine2.'<br/>'.$city->city->Name.' '.$city->city->regionCode->RegionCode; 
} 

で動作するようにそれを変更しなければなりませんでした私の元のコードにifの機能を保持する。元のコードで、私は地域がDBに存在している場合にのみ、唯一の市の後にコンマを追加する

if ($model->address->city->regionCode->RegionCode) echo ', '. $model->address->city->regionCode->RegionCode;

', '.

を使用することができました。

私はそれをどのように取得して、ifを配列内で利用できますか?

答えて

3

ループが1つだけ必要です。ループを1つだけ繰り返すだけです。

foreachループに条件文を張り、変数名を更新することができます。これは、$model->addressが配列であることを前提としています。各繰り返しで$addressはその配列の後続の要素に設定されます。詳細については

foreach ($model->address as $address) { 
    if ($address->AddressLine1) echo $address->AddressLine1.'<br />'; 
    if ($address->AddressLine2) echo $address->AddressLine2.'<br />'; 
    if ($address->city->Name) echo $address->city->Name; 
    if ($address->city->regionCode->RegionCode) echo ', '.$address->city->regionCode->RegionCode; 
} 

+0

これは私が後だもののように見えます。これはアイテムごとに1つのアドレスで動作するので、アイテムごとに複数のアドレスを追加して、請求書に完全に合致するかどうかを確認します。助けてくれてありがとう。 – enfield

+0

期待どおりに動作します。助けてくれてありがとう。 – enfield