2011-08-01 13 views
0

は現在、私はこのforeachの内/他

// display all address with their associated phone numbers 
    foreach ($data->address as $address) { 
     if ($address->fullAddress) echo $address->fullAddress; 
     if ($address->phones->PhoneNumber) echo $address->phones->PhoneNumber); 
    } 

を持っているが、私は場合は上記の句の文が

// display all phone numbers if there is not an address 
    if ($data->relatedPhone) echo $data->relatedPhone; 

を満たしていない場合の代替としてこれを追加する必要がある場合の句のどれも私は全く何も表示しません。だから私はどのように2つを組み合わせることができますか?

+0

アドレス*の意味は何ですか? How do you sayまたはない場合は、アドレスですか?ちょうど明確化を求める。 – hakre

答えて

2

が素早くシンプルなソリューションです:

$addrfound=false; 
foreach ($data->address as $address) { 
    if ($address->fullAddress) { echo $address->fullAddress; $addrfound=true; } 
    if ($address->phones->PhoneNumber) { echo $address->phones->PhoneNumber); $addrfound=true; } 
} 

if (!$addrfound) 
    if ($data->relatedPhone) echo $data->relatedPhone; 
+0

ありがとう、これは私に必要なものを与える。 – enfield

0

あなたはelse if代わりif別の操作を行うことができます。

if (foo) { 
    echo "bar"; 
} else if (foo2) { 
    echo "bar2"; 
} else { 
    echo "foobar"; 
} 

最後elseは、他のすべてのif文がfalseと評価する場合にのみ実行されます。

だからあなたの場合には、私はこれ試してみた:ここ

// display all address with their associated phone numbers 
    foreach ($data->address as $address) { 
     if ($address->fullAddress) { 
     echo $address->fullAddress; 
     } else if ($address->phones->PhoneNumber) { 
     echo $address->phones->PhoneNumber; 
     } else if ($data->relatedPhone) { 
     echo $data->relatedPhone; 
     } 
    } 
+0

入力していただきありがとうございますが、これは動作しません。アドレスが存在しない場合、$ data-> relatedPhoneは表示されません。 – enfield

0

あなたがより簡単にしているif文の中にあなたのロジックを構築する必要があるが

// display all address with their associated phone numbers 
foreach ($data->address as $address) 
{ 
    $hasAddress = (bool) $address->fullAddress; 
    $hasPhone = (bool) $address->phones->PhoneNumber; 
    $isAddress = ??; # add your decision here, I can't see you specified it in your question. 

    if ($hasAddress) echo $address->fullAddress; 
    if ($hasPhone) echo $address->phones->PhoneNumber; 

    // display all phone numbers if there is not an address 
    if (!$isAddress) { 
     if ($data->relatedPhone) echo $data->relatedPhone; 
    } 
} 
0

少なくとも1つの条件が満たされているかどうかを示すフラグを作成できます。

$flag = 0; 
if (condition_1) { 
    echo $output_1; 
    $flag = 1; 
} 

if (condition_2) { 
    echo $output_2; 
    $flag = 1; 
} 

if (!$flag && condition_3) { 
    echo $output_3; 
} 
関連する問題